gpt4 book ai didi

android - GoogleApiClient.isConnected() 在调用 Plus.AccountApi.revokeAccessAndDisconnect() 后返回 true

转载 作者:太空狗 更新时间:2023-10-29 14:59:46 25 4
gpt4 key购买 nike

好的,我目前正在我的应用程序中实现 Google Drive API 连接,因此我让用户通过他们的 Google Plus 帐户登录。我的问题是 GoogleApiClient.isConnected()似乎并不总是准确的。问题是,如果我登录(使用 Android Google Plus 文档 here 中定义的过程,然后我尝试通过调用此方法撤销应用程序对用户 Google Play 帐户的访问权限:

/**
* Revokes the user access given to application and disconnects from their account
*/
public void onGoogleRevokeAndDisconnect()
{
if(mGoogleApiClient.isConnected()) {
//clear account
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
//revoke and disconnect
Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient)
.setResultCallback(new ResultCallback<Status>() {

@Override
public void onResult(Status arg0) {
Toast.makeText(MainActivity.this, "Account disconnected succesfully!",Toast.LENGTH_LONG).show();
mGoogleApiClient.isConnected();
//mGoogleApiClient.disconnect();//TODO: Find out why this is necessary to make this not break
//reconnect
mGoogleApiClient.connect();
//Update button states in SettingsFragment
mSettingsFragment.updateGoogleButtonVisibility();//no longer signed in
}

});

}
else
Toast.makeText(this, "You must be signed in to revoke access!", Toast.LENGTH_SHORT).show();
}

然后当我检查 GoogleApiClient.isConnected() 的值时该方法返回 true .显然,这应该返回 false,因为该帐户已被撤销并断开连接。有趣的是,当我尝试退出而不重新登录时,我得到一个异常提示:

01-19 23:14:37.738: E/AndroidRuntime(17503):java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.

这是在注销过程中在此方法调用 ( clearDefaultAccount() ) 中抛出的,其中清除了默认帐户(文档 here ,它没有说明任何关于抛出异常的信息)也许 GoogleApiClient.isConnected()并且这种方法以不同的方式检查?

我也知道帐户权限确实被撤销了,因为当我关闭应用程序并重新打开它时,系统再次提示我授权我的帐户。当我正常注销且未撤销访问权限时,一切正常。

可能的修复:我确实找到了一个到目前为止似乎有效的修复程序 - 即使用 mGoogleApiClient.disconnect(); 手动断开与 googleApiClient 的连接在onResult() revokeAccessAndDisconnect()的方法| .

最佳答案

我认为您不需要使用 revokeAccessAndDisconnect() 而不是使用 disconnect(),因为我认为它仍在连接旧数据。简单的代码是这样的:

if(mGoogleApiClient.isConnected()) {
mGoogleApiClient.clearDefaultAccount();
mGoogleApiClient.disconnect();
}

关于android - GoogleApiClient.isConnected() 在调用 Plus.AccountApi.revokeAccessAndDisconnect() 后返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28037656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com