在我的Android应用中,我的MainActivity中有一个Google Plus登录按钮。我在onCLick()方法中使用这些行:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API, Plus.PlusOptions.builder().build())
.addScope(Plus.SCOPE_PLUS_LOGIN)
.build();
mGoogleApiClient.connect();
第一次按下按钮时会出现一个登录窗口。我使用我的Google帐户成功登录HomeActivity,然后使用以下两行成功注销:
Plus.AccountApi.clearDefaultAccount(AppController.getInstance().getmGoogleApiClient());
mGoogleApiClient.disconnect();
(我试图将mGoogleApiClient.connect();
作为第3行......它没有改变任何东西)
然后我返回MainActivity,但是当我再次按下登录按钮时,它会自动回到HomeActivity,而不会像第一次一样弹出登录窗口......虽然我已经签署了 - 出...
有人知道我还应该在代码中添加什么? 或者也许有一种方法可以手动显示登录窗口?是什么让它第一次出现?
非常感谢!
答案 0 :(得分:1)
在您的onCreate方法中添加这部分代码:
GoogleSignInOptions googleSignInOptions =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, connectionResult -> Toast.makeText(
this, "Connection failed",
Toast.LENGTH_SHORT).show())
.addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
.build();
然后退出时只需添加此行
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.clearDefaultAccountAndReconnect();
}
答案 1 :(得分:0)
您需要在注销时添加以下代码,以便清除应用中的所有用户数据,重新登录后,您将第一次弹出登录窗口。
public void signOutFromGplus() {
if (mGoogleApiClient.isConnected()) {
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient);
mGoogleApiClient.disconnect();
mGoogleApiClient.connect();
}
}