Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Google、Facebook和LinkedIn的Firebase登录概括为一个Java文件_Java_Android_Firebase_Authentication_Reusability - Fatal编程技术网

将Google、Facebook和LinkedIn的Firebase登录概括为一个Java文件

将Google、Facebook和LinkedIn的Firebase登录概括为一个Java文件,java,android,firebase,authentication,reusability,Java,Android,Firebase,Authentication,Reusability,这是我的FirebaseAuthentication类,它包含所有身份验证方法,如registerUserWithEmailandPassword,loginUserWithEmailandPassword,getCurrentUser,signOutUser,getUserProfile,updateUserName,updateProfilePhoto,更新邮件地址,发送验证邮件,更改密码,发送重置链接,删除账户。它们都工作正常 现在我想包括允许用户登录Google和Facebook的方法。

这是我的
FirebaseAuthentication类
,它包含所有身份验证方法,如
registerUserWithEmailandPassword
loginUserWithEmailandPassword
getCurrentUser
signOutUser
getUserProfile
updateUserName
updateProfilePhoto
更新邮件地址
发送验证邮件
更改密码
发送重置链接
删除账户
。它们都工作正常

现在我想包括允许用户登录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());
        }
      }
   }
}

您为什么/如何才能做到这一点?你有什么错误吗?这个代码怎么了?您有任何错误吗?上面的代码工作正常。我只是想知道如何在这个类中添加登录Facebook和Google的方法。由于Google SignIn调用startActivityForResult()方法,我不知道如何在FirebaseAuthentication类中重写onActivityResult方法。