Вот мой FirebaseAuthentication class
, который содержит все методы аутентификации, такие как registerUserWithEmailandPassword
, loginUserWithEmailandPassword
, getCurrentUser
, signOutUser
, getUserProfile
, updateUserName
, updateProfilePhoto
, updateEmailAddress
, sendVerificationMail
, changePassword
, sendResetLink
, deleteAccount
. Все они работают правильно.
Теперь я хочу включить методы, позволяющие пользователю войти в систему с помощью Google и Facebook. Но я не могу этого достичь.
Я хочу сделать этот класс обобщенным, чтобы я мог использовать его в своих будущих проектах.
Как мне этого добиться.
Пожалуйста, используйте код ниже
public class FirebaseAuthentication {
private Activity mContext;
private FirebaseAuth mAuth;
private OnComplete mOnComplete;
public FirebaseAuthentication(Activity context) {
mContext = context;
mAuth = FirebaseAuth.getInstance();
}
public void registerUserWithEmailandPassword(String username, String password) {
mAuth.createUserWithEmailAndPassword(username, password).addOnCompleteListener(mContext, new MyCompleteListener());
}
public void loginUserWithEmailandPassword(String username, String password) {
mAuth.signInWithEmailAndPassword(username, password).addOnCompleteListener(mContext, new MyCompleteListener());
}
public FirebaseUser getCurrentUser() {
FirebaseUser user = mAuth.getCurrentUser();
return user;
}
public void signOutUser() {
mAuth.signOut();
mContext.startActivity(new Intent(mContext, LoginActivity.class));
}
public User getUserProfile() {
FirebaseUser firebaseUser = getCurrentUser();
User user = new User();
if (firebaseUser != null) {
user.setName(firebaseUser.getDisplayName());
user.setEmail(firebaseUser.getEmail());
user.setPhotoUrl(firebaseUser.getPhotoUrl());
user.setUid(firebaseUser.getUid());
user.setVerifiedEmail(firebaseUser.isEmailVerified());
}
return user;
}
public void updateUserName(String name) {
FirebaseUser firebaseUser = getCurrentUser();
if (firebaseUser != null) {
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(name)
.build();
firebaseUser.updateProfile(profileUpdates).addOnCompleteListener(new MyCompleteListener());
}
}
public void updateProfilePhoto(String uri) {
FirebaseUser firebaseUser = getCurrentUser();
if (firebaseUser != null) {
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setPhotoUri(Uri.parse(uri))
.build();
firebaseUser.updateProfile(profileUpdates).addOnCompleteListener(new MyCompleteListener());
}
}
public void updateEmailAddress(String email) {
FirebaseUser firebaseUser = getCurrentUser();
if (firebaseUser != null) {
firebaseUser.updateEmail(email).addOnCompleteListener(new MyCompleteListener());
}
}
public void sendVerificationMail() {
FirebaseUser firebaseUser = getCurrentUser();
firebaseUser.sendEmailVerification().addOnCompleteListener(new MyCompleteListener());
}
public void changePassword(String password) {
FirebaseUser user = getCurrentUser();
if (user != null) {
String newPassword = password;
user.updatePassword(newPassword).addOnCompleteListener(new MyCompleteListener());
}
}
public void sendResetLink(String email) {
FirebaseAuth auth = FirebaseAuth.getInstance();
String emailAddress = email;
auth.sendPasswordResetEmail(emailAddress).addOnCompleteListener(new MyCompleteListener());
}
public void deleteAccount() {
FirebaseUser user = getCurrentUser();
if (user != null) {
user.delete().addOnCompleteListener(new MyCompleteListener());
}
}
public interface OnComplete {
void onSuccessListner();
void onFailureListner(String message);
}
public void setOnCompleteListener(OnComplete onCompleteListener) {
mOnComplete = onCompleteListener;
}
private class MyCompleteListener implements OnCompleteListener {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
mOnComplete.onSuccessListner();
}else {
mOnComplete.onFailureListner(task.getException().getLocalizedMessage());
}
}
}
}