我是android的新手,我使用Firebase创建了一个简单的登录方法,其中包括使用Email,Facebook和google登录。我创建了波纹管退出功能。 但是,当我单击退出方法时,第二次它不要求对facebook和google进行身份验证。 有谁能够帮助我! 如果有什么问题,请不要害怕,我对此很陌生。
private void OnClickSignOut(){
sign_out_btn =(Button)findViewById(R.id.logout_btn);
finish();
//startActivity(new Intent(ProfileActivity.this,MainActivity.class));
sign_out_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseAuth.getInstance().signOut();
for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) {
if (user.getProviderId().equals("facebook.com")) {
System.out.println("User is signed in with Facebook");
LoginManager.getInstance().logOut();
startActivity(new Intent(ProfileActivity.this,MainActivity.class));
}
else if(user.getProviderId().equals("google.com")){
mGoogleSignInClient.signOut().addOnCompleteListener(ProfileActivity.this,
new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
startActivity(new Intent(ProfileActivity.this,MainActivity.class));
}
});
}
else{
startActivity(new Intent(ProfileActivity.this,MainActivity.class));
}
}
}
});
}
最初的问题是通过更改finish语句的位置来解决的。 但是修改代码后,我遇到了其他问题。 标识符返回google.com,但未进入循环。 在第二次单击注销按钮时应用崩溃。 下面是Logcat和Logcat的代码
for (UserInfo user: FirebaseAuth.getInstance().getCurrentUser().getProviderData()) { Log.d("***************1.Check provider "+user.getProviderId(),"check"); if (user.getProviderId().equals("facebook.com")) { FirebaseAuth.getInstance().signOut(); System.out.println("User is signed in with Facebook"); LoginManager.getInstance().logOut(); startActivity(new Intent(ProfileActivity.this,MainActivity.class)); Log.d("Signout","Facebook Clicked"); finish(); } Log.d("***************2.Check provider "+user.getProviderId(),"check"); if(user.getProviderId().equals("google.com")){ FirebaseAuth.getInstance().signOut(); mGoogleSignInClient.signOut().addOnCompleteListener(ProfileActivity.this, new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { System.out.println("User is signed in with Google"); startActivity(new Intent(ProfileActivity.this,MainActivity.class)); Log.d("****Signout","Google Clicked"); finish(); } }); } else{ FirebaseAuth.getInstance().signOut(); startActivity(new Intent(ProfileActivity.this,MainActivity.class)); System.out.println("User is signed in with email"); Log.d("****Signout","email signedout"); finish(); } }