我正在使用Authenticating against App Engine from an Android app中说明的代码,以便在我的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();
}
}
};
有人面对这个吗?知道如何在下次运行时强制确认吗?
答案 0 :(得分:1)
这些权限保存在系统数据库中。卸载后应删除您的应用,但清除应用数据不会产生任何影响。如果它不起作用,可能是一个bug。尝试使用其他设备和/或模拟器。可能有效的极端措施是工厂重置:)
答案 1 :(得分:0)
我找到了一种更清洁的解决方案。而且我觉得有点快。您只需执行两个步骤(下面的1和2;显示详细步骤):
0)我不认为这个额外的步骤是必要的(没有尝试过),但无论如何我都添加了它。只需与应用中的PlusClient
断开连接即可。
mPlusClient.clearDefaultAccount();
mPlusClient.disconnect();
1)清除设备上Google Play services
所有应用屏幕(或已下载屏幕)中Settings
应用的数据。
2)通过网络上的Google帐户从Connected applications and sites
部分的Privacy
屏幕撤消对您的应用的权限。
3)好了,再次连接。它现在应该工作。需要时重复步骤。
注意:步骤1和2至关重要。如果您只执行第1步,它会像往常一样登录您的应用,同时显示Toast说Welcome back to <app_name>. You're signed in as <account_name>