在Android应用上撤消谷歌帐户访问确认

时间:2012-05-10 14:52:24

标签: android accountmanager

我正在使用Authenticating against App Engine from an Android app中说明的代码,以便在我的GAE应用程序上启用Google帐户身份验证。问题是,一旦我允许我的Android应用程序访问帐户,我就无法使用同一帐户重复该过程(进行测试)。我试过了:

  • invalidateAuthToken()
  • 清除数据(设置=>应用程序=>管理应用程序)
  • 卸载该应用

但该应用仍然可以访问该帐户。以下是我使用的代码片段显示用户确认的意图:

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 个答案:

答案 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>