我正在使用从 Android 应用程序对 App Engine 进行身份验证中所述的代码,以便在我的 GAE 应用程序上启用 Google 帐户身份验证。问题是,一旦我允许我的 android 应用程序访问一个帐户,我就无法使用相同的帐户再次重复该过程(用于测试)。我试过:
- 无效身份验证令牌()
- 清除数据(设置 => 应用程序 => 管理应用程序)
- 卸载该应用
但是该应用程序仍然可以访问该帐户。以下是我使用的代码片段,显示了用户确认的意图:
private class GetAuthTokenCallback implements AccountManagerCallback<Bundle> {
public void run(AccountManagerFuture<Bundle> result) {
Bundle bundle;
try {
bundle = result.getResult();
Intent intent = (Intent)bundle.get(AccountManager.KEY_INTENT);
if(intent != null) {
// User input required
startActivity(intent);
} else {
onGetAuthToken(bundle);
}
} catch (OperationCanceledException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AuthenticatorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
有人遇到过这种情况吗?知道如何在下次运行时强制确认吗?
这些权限保存在系统数据库中。卸载应用后应将其删除,但清除应用数据不会产生任何效果。如果它不起作用,则可能是错误。尝试使用其他设备和/或模拟器。可能有效的极端措施是恢复出厂设置:)
我找到了一种更清洁的解决方案。我想会快一点。您只需要执行2个步骤(下面的1和2;详细步骤如图所示):
0)我认为这个额外的步骤不是必需的(没有尝试过),但我还是添加了它。只需断开与应用中PlusClient
的连接即可。
mPlusClient.clearDefaultAccount();
mPlusClient.disconnect();
1)从设备上的Settings
清除所有应用程序屏幕(或下载屏幕)中Google Play services
应用程序中的数据。
2) 从您网络上的 Google 帐号的"Privacy
"部分的Connected applications and sites
屏幕撤消应用的权限。
3)好吧,再次连接。它现在应该可以工作了。需要时重复步骤。
注意:步骤 1 和 2 至关重要。如果您只执行步骤 1,它将像往常一样登录您的应用程序,还显示一个 Toast 说Welcome back to <app_name>. You're signed in as <account_name>