Обобщение входа в Firebase для Google, Facebook и LinkedIn в один файл Java - PullRequest
0 голосов
/ 12 января 2019

Вот мой 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());
        }
      }
   }
}
...