解析Facebook代码参数

时间:2011-11-22 17:13:46

标签: facebook

我要使用以下请求对Facebook进行身份验证:

https://www.facebook.com/dialog/oauth?client_id=MYAPPID&redirect_uri=http://localhost:3000/oauth/callback.html&scope=email

回复如下:

http://localhost:3000/oauth/callback.html?code=AQA6VzXu_In9_GIiqu-GFEo6d8sA4jM5L6rLQWtL9g2aMo2Ju5h9j_uCcqR-w7cYifyi0IYsOHtOk5S_jKBBlgQatybYDHOfSs2EpA3H3NHQIDIaKmC-9kje9_QQbhPd0Ge1pP-52OR7iOQWc_R8D-YapXcArTAmpIHLBHatOSHB0x3lFv4DVUECfb1IdYIZlVM#_=_

问题是我无法从此代码中检索访问令牌。它通常应该有一个点分隔符("。"),但这没有,这就是为什么我无法解码它。

关于我做错的任何想法?

2 个答案:

答案 0 :(得分:2)

你不应该解码它,它不是signed_request。

您需要向

发送请求
https://graph.facebook.com/oauth/access_token?
 client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&
 client_secret=YOUR_APP_SECRET&code=THE_CODE_YOU_RECEIVED

以获取访问令牌

答案 1 :(得分:1)

CODE和TOKEN之间存在差异,两者都非常混淆。

客户端登录(Javascript + HTML)

如果您只想使用javascript(仅限HTML),您可能需要在第一次请求中添加&response_type=token

另外,我认为您实际上不需要拆分和使用令牌,而是让JS api为您完成。

服务器端登录(PHP)

您知道有一个用户使用CODE访问了您的页面。 现在,您必须使用服务器端脚本访问此URL,它将返回access_token。

https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID&redirect_uri=YOUR_URL& client_secret=YOUR_APP_SECRET&code=CODE

如果您的回调是PHP,那么您可以filegetcontentsjson_decode,但我建议使用官方的Facebook SDK。

强烈推荐的doc页面 -
http://developers.facebook.com/docs/authentication/