1) 在我的HomeActivity 屏幕中会有一个用户注销按钮。此按钮导致 LoginActivity
的 signOut() 方法 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
//adding an onclicklistener to signOut button
findViewById(R.id.sign_out_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LoginActivity loginActivity = new LoginActivity();
loginActivity.signOut();
}
});
}
2) 在我的 LoginActivity 中,signOut() 方法将执行 this tutorial 中的内容由谷歌提供
public void signOut() {
mGoogleSignInClient.signOut()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(getApplicationContext(), "Disconnecting...", Toast.LENGTH_LONG);
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(i);
}
});
}
我希望上面的代码可以工作,但发生的事情是,当在注销后执行返回 LoginActivity 的 Intent 时,下面的 onStart() 方法进入 if (account != null) 并返回应该注销的用户
@Override
public void onStart() {
super.onStart();
// Check for existing Google Sign In account
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
if (account != null) {
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
Toast.makeText(this, "Logged as" + account.getDisplayName(), Toast.LENGTH_LONG).show();
} else {
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
}
}
最佳答案
clearDefaultAccountAndReconnect() api 将清除之前登录的帐户详细信息。尝试在监听器的注销 onComplete() 方法中使用以下代码段。
if (mGoogleApiClient.hasConnectedApi(Auth.GOOGLE_SIGN_IN_API)) {
mGoogleApiClient.clearDefaultAccountAndReconnect();
mGoogleApiClient.stopAutoManage(context);
mGoogleApiClient.disconnect();
}
关于java - Android 的 GoogleSignInClient.signOut() 不会注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58172878/