1

我一直在编写一些实验代码来测试 PlusClient 连接流程是如何工作的。我按照文档进行操作,能够弹出帐户选择器,显示授权对话框,并且能够获取访问令牌。

那是昨天。

今天,我完全无法让 PlusClient 正确连接。发生的情况是在 PlusClient.connect() 上,立即使用空包调用连接回调。调用 PlusClient.getAccountName() 返回 null。我尝试调用 PlusClient.revokeAccessAndDisconnect() 并使用 connectionResult 调用 onAccessRevoked 回调,其中 INTERNAL_ERROR 作为其错误代码。

就像 Google Play 服务认为它有一个有效的令牌但忘记了谁登录了。有没有办法重置 Google Play 服务,这样它就不再记得我的应用程序的身份验证令牌了?我已经尝试清除 Google Play 服务和 Google 服务框架,但这并没有解决我的问题。

编辑:

这实际上是由于我自己的愚蠢而发生的。我已经开始将 scopes 属性重构为它自己的变量,但还没有完成这项工作。我在代码中完成了以下操作:

    final String scopes = Scopes.PLUS_LOGIN + " " 
            + Scopes.PLUS_PROFILE + " " 
            + "https://www.googleapis.com/auth/drive.appdata";

    mPlusClient = new PlusClient.Builder(this, this, this)
              .setVisibleActivities("http://schemas.google.com/AddActivity",                                                            
                   "http://schemas.google.com/BuyActivity")
              .setScopes()
              .build();

问题是 setScopes() 有一个重载,但我想说的是 setScopes(scopes)。这导致了我上面描述的问题。

4

1 回答 1

0

请参阅编辑以了解为什么我不应该在困倦时编码。我忘记在 PlusClient.Builder 中的 setScopes 方法调用中添加一个参数。不知道为什么 API 会允许这样做。它应该抛出一个很好的异常,我可以用它来追踪我的错字。

于 2013-06-27T19:45:37.817 回答