Here is my FirebaseAuthentication class that contains all authentication methods like registerUserWithEmailandPassword, loginUserWithEmailandPassword, getCurrentUser, signOutUser, getUserProfile, updateUserName, updateProfilePhoto, updateEmailAddress, sendVerificationMail, changePassword, sendResetLink, deleteAccount. They all are working correctly.
Now I want to include methods that can allow user to login with Google and Facebook. But I am unable to achieve it.
I want to make this class generalize so that I can use it in my future projects.
How can I achieve it.
Please refer the code below
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());
}
}
}
}