我已经实现了Android应用的Google签名。用户可以从Google登录按钮中成功登录。
选择一个社交帐户时出现此屏幕:屏幕截图
所以现在用户通过选择其帐户成功登录了。
现在,用户注销,并尝试通过使用Google登录按钮再次登录。
目前,他没有选择选择帐户的选项,他会自动使用他/她第一次选择的帐户记录。
在注销时,我该怎么办才能清除选定帐户的缓存。
在android的firebase文档中,他们仅参考以下内容:
Firebase.auth.signOut()
但是,下次用户登录时,该应用将自动选择上一个电子邮件。为了避免这种情况,您也应该使用以下代码:
googleSignInClient.signOut()
由于您没有提供任何代码或参考您的登录方式和登录方式,因此您可能会错误地从应用中签署用户。
因此,这是文档描述的一个人在用户注销时应做的:https://developers.google.com/Indentity/sign-in/android/disconnect
签字:
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
// ...
}
});
注意:您必须确认GoogleapicLient.onnected已被调用。
还检查onResult
中的status
-也许有一些错误,可能会导致答案。
GoogleSignInOptions gso = new GoogleSignInOptions.
Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).
build();
GoogleSignInClient googleSignInClient= GoogleSignIn.getClient(this,gso);
googleSignInClient.signOut().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
FirebaseAuth.getInstance().signOut(); // very important if you are using firebase.
Intent login_intent = new Intent(getApplicationContext(),YouLoginActivity.class);
login_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); // clear previous task (optional)
startActivity(login_intent);
}
}
});
尝试使用此方法从Google签名中注销:
在成功登录onConnected(Bundle arg0)
public void Disconnect_google() {
try {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.clearDefaultAccountAndReconnect().setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
mGoogleApiClient.disconnect();
Toast.makeText(getApplicationContext(),"Disconnected",Toast.LENGTH_SHORT).show();
}
});
}
} catch (Exception e) {
Log.d("DISCONNECT ERROR", e.toString());
}
}
在注销时从Google登录时,然后使用以下代码
if (mGoogleApiClient.isConnected()) {
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
mGoogleApiClient.disconnect();
mGoogleApiClient.connect();
}
您的问题将通过仅使用单行进行签名而不是8行代码来解决您的问题,您可以在签名用户
时可以在标志性中使用private fun signIn() {
googleSignInClient.signOut()
val signInIntent = googleSignInClient.signInIntent
startActivityForResult(signInIntent, RC_SIGN_IN)
}
,在登录功能中,您可以使用此
FirebaseAuth.getInstance().signOut()
firebaseauth在哪里:com.google.firebase.auth公共抽象类Firebaseauth
使用Google登录时,它将显示设备中的所有符号Google帐户。当您选择任何一个都比进一步进行时,但是当您从系统中注销并再次登录时。它直接选择了先前的帐户。
因此,要从设备中的所有现有帐户中选择您必须清除应用程序数据。
清除应用程序数据以下步骤1.转到设备设置2.选择应用程序3.选择您的应用4.存储/清除数据