我一直在编写一些实验代码来测试 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)。这导致了我上面描述的问题。