2

我正在使用从 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();
        }
    }
};

有没有人遇到过这个?知道如何在下一次运行时强制确认吗?

4

2 回答 2

1

这些权限保存在系统数据库中。卸载后应将您的应用程序删除,但清除应用程序数据没有任何效果。如果它不起作用,可能是一个错误。在不同的设备和/或模拟器上尝试。可能可行的极端措施是恢复出厂设置:)

于 2012-05-11T02:50:55.503 回答
0

我找到了一种更清洁的解决方案。我认为要快一点。您只需要执行 2 个步骤(下面的 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>

于 2013-07-02T11:14:14.420 回答