android google 登录 window 注销后不再弹出
android google sign in window doesn't pop again after logout
在我的 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();
我第一次按下按钮时出现登录 window。我使用 google 帐户成功登录到 HomeActivity,然后使用以下两行成功注销:
Plus.AccountApi.clearDefaultAccount(AppController.getInstance().getmGoogleApiClient());
mGoogleApiClient.disconnect();
(我试着把 mGoogleApiClient.connect();
作为第三行..它没有改变任何东西)
然后我 return 到 MainActivity,但是当我再次按下登录按钮时,它会自动将我登录回 HomeActivity,而不会弹出登录 window第一次...虽然我据称已退出...
有人知道我还应该在我的代码中添加什么吗?
或者也许有一种方法可以手动显示登录 window?是什么让它第一次流行起来?
非常感谢!
您需要在退出时添加以下代码,这样它会从您的应用中清除所有用户数据,重新登录后您会像第一次一样弹出登录 window .
public void signOutFromGplus() {
if (mGoogleApiClient.isConnected()) {
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient);
mGoogleApiClient.disconnect();
mGoogleApiClient.connect();
}
}
在您的 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();
}
在我的 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();
我第一次按下按钮时出现登录 window。我使用 google 帐户成功登录到 HomeActivity,然后使用以下两行成功注销:
Plus.AccountApi.clearDefaultAccount(AppController.getInstance().getmGoogleApiClient());
mGoogleApiClient.disconnect();
(我试着把 mGoogleApiClient.connect();
作为第三行..它没有改变任何东西)
然后我 return 到 MainActivity,但是当我再次按下登录按钮时,它会自动将我登录回 HomeActivity,而不会弹出登录 window第一次...虽然我据称已退出...
有人知道我还应该在我的代码中添加什么吗? 或者也许有一种方法可以手动显示登录 window?是什么让它第一次流行起来?
非常感谢!
您需要在退出时添加以下代码,这样它会从您的应用中清除所有用户数据,重新登录后您会像第一次一样弹出登录 window .
public void signOutFromGplus() {
if (mGoogleApiClient.isConnected()) {
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient);
mGoogleApiClient.disconnect();
mGoogleApiClient.connect();
}
}
在您的 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();
}