我要使用以下请求对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#_=_
问题是我无法从此代码中检索访问令牌。它通常应该有一个点分隔符("。"),但这没有,这就是为什么我无法解码它。
关于我做错的任何想法?
答案 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),您可能需要在第一次请求中添加&response_type=token
。
另外,我认为您实际上不需要拆分和使用令牌,而是让JS api为您完成。
您知道有一个用户使用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,那么您可以filegetcontents
和json_decode
,但我建议使用官方的Facebook SDK。
强烈推荐的doc页面 -
http://developers.facebook.com/docs/authentication/