在第三方服务器上验证Android的authToken



我正在编写一个Android应用程序,它使用AccountManager来获取令牌。从一个安卓应用程序,我可以与谷歌Picasa互动-它工作得很好。

我想实现的是:向我的第三方服务器发送一些文本+authToken,然后在保存文本之前检查令牌是否正确。现在的问题是:是否可以仅根据令牌本身(可能还有电子邮件地址)来确定特定令牌的authToken是否正确。

我已经对服务器部分进行了编程,它接受令牌(从android应用程序发送),然后向URL地址发出请求:

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here%

我得到的是以下JSON:

{
  "error" : "invalid_token"
}

但是这里的链接http://oauthssodemo.appspot.com/step/4声明如果令牌是正确的,我应该接收不同的JSON响应。你能告诉我我做错了什么吗:我相信检查令牌有效性的方法真的没有那么简单,但我更应该实现整个openid或其他什么。即使是这样,我如何检查安卓应用程序发送的令牌是否正确,这样我就可以保存消息的"文本"部分。

谢谢。

停止使用AccountManager,开始使用Google Play服务的GoogleAuthUtil类,这样就很容易了。看见http://android-developers.blogspot.ca/2013/01/verifying-back-end-calls-from-android.html

解决方案如下。您可以通过以下网址验证令牌:

https://accounts.google.com/o/oauth2/tokeninfo?access_token=%token_here%

但在我的情况下,我试图验证"授权代码",而不是"访问令牌",如您所见:https://code.google.com/oauthplayground/

如果您使用的是Android和OAuth,请不要使用

lh2 

而是使用以下作为服务名称:

http://picasaweb.google.com/data/

所以你应该调用getAuthToken如下

getAuthToken(account, "http://picasaweb.google.com/data/" , true, null, null);

然后,您可以在上面发布的URI上验证从该调用接收到的令牌。

阅读https://developers.google.com/accounts/docs/OAuth2WebServer

网络服务器收到授权码后,可以进行交换访问令牌和刷新令牌的授权码。这请求是HTTPs的帖子,包括以下参数:

我发现了passport谷歌代币passport策略,它完美地执行了任务。

https://www.npmjs.com/package/passport-google-token

以上链接提供了更多详细信息。

基于以下答案中的信息:在node.js服务器中验证谷歌授予的OAuth令牌的正确方法是什么,

您可以尝试在url中使用id_token而不是access_token来调用Google的tokeninfo端点。

相关内容

  • 没有找到相关文章

最新更新