在Facebook API上获取用户访问令牌

时间:2013-08-25 20:08:45

标签: python facebook-graph-api

我尝试在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#_=_,没有任何疑问。

为什么?我如何获得用户的代码?

3 个答案:

答案 0 :(得分:1)

您的redirect_uri不应该http://www.facebook.com/connect/login_success.html它应该是您的应用程序中可以处理Facebook身份验证的网址

<强>更新

如果您仍在开发自己的网站并希望在本地主机上进行测试,则可以使用localhost/mydevwebsite/login_success/,否则请使用您正在使用的应用程序的域myappdomain.com/loginsuccess/

答案 1 :(得分:0)

  1. 访问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"]);
    } 
    
  2. 此signed_request包含完整的所需信息(包括访问令牌)。

答案 2 :(得分:0)

https://www.facebook.com/dialog/oauth?client_id=[Your API KEY]&amp; redirect_url = [将处理身份验证的服务]&amp; scope = [您需要的权限]。