我一直在编写一些实验代码来测试PlusClient连接流程的工作原理。我按照文档操作,能够弹出帐户选择器,显示授权对话框,并能够访问令牌。
那是昨天。今天,我完全无法让PlusClient正常连接。会发生什么是在PlusClient.connect()上,立即使用空包调用connect回调。调用PlusClient.getAccountName()返回null。我尝试调用PlusClient.revokeAccessAndDisconnect(),并使用带有INTERNAL_ERROR的connectionResult作为其errorCode调用onAccessRevoked回调。
就像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(范围)。这引起了我上面描述的问题。
答案 0 :(得分:0)
请参阅编辑,了解为什么我不应该在昏昏欲睡时编码。我曾经想过要在PlusClient.Builder中为setScopes方法调用添加一个参数。不确定为什么API会允许这样做。它应该抛出一个很好的例外,我可以用它来追踪我的拼写错误。