Android 安卓PlusClient实现&;领取代币

Android 安卓PlusClient实现&;领取代币,android,google-api,oauth-2.0,google-plus,Android,Google Api,Oauth 2.0,Google Plus,所以我实现了google plus登录到我的应用程序。。。我的实现非常接近于给出的示例。我的和他的最大区别是我需要的范围更大。构建plusclient时,我指定以下作用域: "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/

所以我实现了google plus登录到我的应用程序。。。我的实现非常接近于给出的示例。我的和他的最大区别是我需要的范围更大。构建plusclient时,我指定以下作用域:

    "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email"
稍后,在我的onConnected方法中,我尝试从会话中获取accesstoken,以便传递到我们的服务器,在那里我们进行真正的meat&potatos工作

    GoogleAuthUtil.getToken(SplashActivity.this, mPlusClient.getAccountName(), "oauth2: https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email")
这确实会产生accesstoken。哎呀!正确的?不。当我们尝试使用此令牌时,它似乎与我们的应用程序没有关联。当通过googles tokeninfo端点运行令牌时,我们得到了如下信息:

{
 "issued_to": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com",
 "audience": "608941808256-43vtfndets79kf5hac8ieujto8837660.apps.googleusercontent.com",
 "user_id": "107245641469745809180",
 "scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email",
 "expires_in": 3577,
 "email": "redacted@email.com",
 "verified_email": true,
 "access_type": "online"
}
该值与我们的任何客户id都不匹配。根据最后一部分,谷歌无法将这个代币请求与我们的项目相匹配。然而,在我们的API控制台中,我确实有android的SHA指纹,它确实与包名用分号隔开。没有拼写错误。我等了好几个小时才知道这是否是一个传播问题。我还添加了SHA指纹等等,为我们的调试密钥库创建了一个clientid。无论是从eclipse导出已签名的apk,还是直接运行它,我们都会遇到同样的问题

这快把我逼疯了。我不知道该怎么办

例如,打电话给

googleapis.com/plus/v1/people/me/people/visible?访问\u token=token\u HERE&maxResults=100&pageToken=&alt=json&orderBy=best

我明白了

因为不管出于什么原因,谷歌都没有把这个标记和我的项目联系起来

 String accessToken = GoogleAuthUtil.getToken(getActivity(), plusClient.getAccountName(),    
 "oauth2:" + Scopes.PLUS_LOGIN + " " + Scopes.PLUS_PROFILE + " " + MY_SCOPE);

我的代码有效。也许您在“oauth2:”

之后有了不必要的标签,到目前为止,这是google api中的一个bug


如果我取出“”范围,那么一切都正常,令牌成功地与我们的项目关联。如果“”作为请求的作用域包含,则api端的所有内容都会中断,尽管它会正确提示用户获取该特定权限。虽然我们在请求此范围时仍然获得令牌,但该令牌与我们的项目不关联。

是的,代码也适用于我。。。我得到一个通行证。。。。只是访问令牌与我们的项目没有关联。我可以调用“”,但如我前面所述,使用该标记的任何其他调用都会生成一个我正在使用“”作为我的作用域。我为其他所有人列出的第一个作用域是,在该URL上需要一个尾随斜杠:“-如果没有它,它将无法匹配范围,并给出一个错误。我非常感谢您的帮助。哇!我只能说哇。少了一条斜线。哈哈。然而,我坚持认为这是api中的一个bug。当请求此范围而不使用尾随斜杠时,它会解析并通知该权限页面中的用户我们正在请求此权限,但令牌与应用程序的链接中断。。。不管怎样,谢谢:-)还有,有趣的是。。。当您运行通过该令牌信息端点使用或不使用斜杠后获得的令牌时,它实际上会在关联作用域列表中显示带斜杠和不带斜杠的作用域。也许有两个m8/Feed作用域正在解决?这让我抓狂。我似乎无法解决它。
 String accessToken = GoogleAuthUtil.getToken(getActivity(), plusClient.getAccountName(),    
 "oauth2:" + Scopes.PLUS_LOGIN + " " + Scopes.PLUS_PROFILE + " " + MY_SCOPE);