Oauth 2.0 无法从 signed_request 'code' 值获取访问令牌
Posted
技术标签:
【中文标题】Oauth 2.0 无法从 signed_request \'code\' 值获取访问令牌【英文标题】:Oauth 2.0 cannot get an access token from the signed_request 'code' valueOauth 2.0 无法从 signed_request 'code' 值获取访问令牌 【发布时间】:2012-01-21 02:44:23 【问题描述】:我正在迁移到 Oauth 2.0。我当前的站点使用 JS SDK,有一个 fb-login 按钮,然后我正在访问 Graph 以获取用户详细信息。
我在获取访问令牌以从 Graph 获取此数据时遇到问题。
一个问题可能是 JS SDK 对话框没有将我重定向到它说它应该的 URL,即带有 ?code=XXXXXXX 的那个我可以用来获取访问令牌。
所以我查看了 php SDK(我正在使用 ASP)来了解它是如何做到的。我已经解析了 cookie 中的签名请求值,获取了“代码”参数中的值以添加到令牌 URL,但我无法获得访问令牌。这些是我正在使用的值:
解析的签名请求数据:
"algorithm":"HMAC-SHA256","code":"2.AQCovUOFCduELbna.3600.1323900000.1-773555243|Y_cW4riF4K7el_9a4oVNjL0qvZc","issued_at":1323895617,"user_id":"XXXXXXXXXX"
Token URL: https://graph.facebook.com/oauth/access_token?
client_id=XXXXXXXX&
redirect_uri=XXXXXXXX&
client_secret=XXXXXX&
code=2.AQCovUOFCduELbna.3600.1323900000.1-773555243|Y_cW4riF4K7el_9a4oVNjL0qvZc
这是回复:
"error":"message":"Error validating verification code.","type":"OAuthException"
代码值的格式是否正确?有什么想法吗?
【问题讨论】:
你不会忘记 'client_secret=XXXXXX' 后面的 '&' 吗? 抱歉,这是格式问题。我的代码中确实有与号。我会修改的。 【参考方案1】:这里的问题完全相同...
解决方案:如果代码是从 cookie 负载中提取的,请将参数 redirect_uri 留空
试试
令牌网址:https://graph.facebook.com/oauth/access_token?client_id=XXXXXXXX&redirect_uri=&client_secret=XXXXXX&code=2.AQCovUOFCduELbna.3600.1323900000.1-773555243|Y_cW4riF4K7el_9a4oVNjL0qvZc
为我工作!
【讨论】:
啊,成功了!羞耻 facebook 文档说包括它。非常感谢。 facebook(非)文档将是我的死亡 哈哈,我在谷歌删除网页的摘录中发现了这个秘密。为了让读者更加清楚,redirect_uri
必须存在,但指定为空。以上是关于Oauth 2.0 无法从 signed_request 'code' 值获取访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
OAuth 2.0 google 权限对话框在 WP7 上无法正常工作