在安卓应用程序上撤消谷歌帐户访问确认



我正在使用从 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>

最新更新