我尝试在Facebook API上获取访问令牌。
根据this answer,我首先需要建立一个链接https://www.facebook.com/dialog/oauth?client_id=[Your API KEY]&redirect_url=[Service that will handle Authentication]&scope=[Permissions you Need]
。就我而言,它看起来像这样:
https://www.facebook.com/dialog/oauth?client_id=559149457475028&redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_stream
在此之后,它应该使用包含代码的查询字符串重定向到指定的url,而该代码又可以用于获取用户的访问令牌。但在我的情况下,它重定向到以下页面:http://www.facebook.com/connect/blank.html#_=_
,没有任何疑问。
为什么?我如何获得用户的代码?
答案 0 :(得分:1)
您的redirect_uri
不应该http://www.facebook.com/connect/login_success.html
它应该是您的应用程序中可以处理Facebook身份验证的网址
<强>更新强>
如果您仍在开发自己的网站并希望在本地主机上进行测试,则可以使用localhost/mydevwebsite/login_success/
,否则请使用您正在使用的应用程序的域myappdomain.com/loginsuccess/
答案 1 :(得分:0)
访问signed_request
参数并提示用户授权您的应用:
$app_id = "YOUR_APP_ID";
$canvas_page = "YOUR_CANVAS_PAGE_URL";
$auth_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($canvas_page);
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
echo ("Welcome User: " . $data["user_id"]);
}
此signed_request包含完整的所需信息(包括访问令牌)。
答案 2 :(得分:0)
https://www.facebook.com/dialog/oauth?client_id=[Your API KEY]&amp; redirect_url = [将处理身份验证的服务]&amp; scope = [您需要的权限]。