将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方法。