Oauth 2.0无法从signed_request“code”值获取访问令牌

时间:2011-12-15 11:39:14

标签: facebook-graph-api access-token facebook-oauth facebook-javascript-sdk

我正在迁移到Oauth 2.0。我当前的站点使用JS SDK,有一个fb-login按钮,然后我访问Graph来获取用户的详细信息。

我在获取访问令牌以从Graph获取此数据时遇到问题。

一个问题可能是JS SDK对话框没有将我的重定向到它应该的URL,即带有?code = XXXXXXX的URL,然后我可以使用它来获取访问令牌。

所以我看了php SDK(我正在使用ASP)来看看它是如何做到的。我已经在cookie中解析了signed-request值,得到了'code'参数中的值以添加到令牌URL但我无法获得访问令牌。这些是我正在使用的值:

解析signed_request数据:

{"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"}} 

代码值是否显示格式正确?关于什么是错的任何想法?

1 个答案:

答案 0 :(得分:10)

这里完全相同的问题...

解决方案:如果从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

为我工作!