对发布到粉丝页面的应用程序的永久访问令牌 - 错误代码:1

时间:2013-11-08 15:51:04

标签: php facebook facebook-graph-api facebook-php-sdk facebook-access-token

我正在按照https://stackoverflow.com/a/18399927/2510225中描述的步骤进行操作,但是,从我的服务器,我收到以下错误:

{"error":{"message":"The access token does not belong to application APP-ID","type":"OAuthException","code":1}}

我无法弄清楚我做错了什么。任何人都知道获取永久访问令牌的过程是否已更改,或者是否存在同样的问题?

我在请求中使用的访问令牌是用户访问令牌,我认为这是正确的。

换句话说,我正在使用它:

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token}

使用应用程序的app_id和app_secret我想在页面上发布以及创建应用程序的用户的短期令牌。这是正确的方法吗?

(图片来自@Sahil Mittal的补充答案) 这就是我正在使用API​​_ID(红色箭头)的地方。那是对的,对吗? enter image description here

2 个答案:

答案 0 :(得分:1)

好的,这就是我解决这个问题的方法,结合[here] [1]给出的两个解决方案。 :

1)将应用与页面关联(可能已完成)

http://facebook.com/add.php?api_key=_APP_ID&pages=1&page=_PAGE_ID

2)拿这里给出的代码:

https://graph.facebook.com/oauth/authorize?client_id=_APP_ID_&scope=manage_pages&redirect_uri=http://www.facebook.com/connect/login_success.html

浏览器的网址框上输出速度非常快,请快速复制。此输出应该像这样

https://www.facebook.com/connect/login_success.html?code=1234546bigstringwithlotsoflettersandnumbersdfdarsd#_=_

3)使用CODE获取USER的短期访问令牌(我猜它可以与Graph API Explorer一样))

https://graph.facebook.com/oauth/access_token?client_id=_APP_ID_&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=_APP_SECRET_&code=_CODE_

4)将短期访问令牌转换为长期访问令牌(用户):

https://graph.facebook.com/oauth/access_token?client_id=_APP_ID_&client_secret=_APP_SECRET_&grant_type=fb_exchange_token&fb_exchange_token=_SHORT_LIFE_ACCESS_TOKEN_

您可以检查此访问令牌是否存在 https://developers.facebook.com/tools/debug/accesstoken

4)转到Graph API Explorer(https://developers.facebook.com/tools/explorer),单击“X”清除访问令牌框,然后填写您在上一步中创建的长访问令牌。

5)在下面的框中,选择/ ACCOUNT /,查看此访问令牌所关联的用户的所有页面。这些页面的访问令牌永远不会过期访问令牌,可以在https://developers.facebook.com/tools/debug/accesstoken

中进行验证

这就是我的工作方式。

答案 1 :(得分:0)

您忘记将APP-ID替换为相关的应用ID。

您可以从应用设置中获得相同的内容


获取短期令牌:

if(empty($code))
{ 
    $dialog_url= "http://www.facebook.com/dialog/oauth?"
                . "client_id=" . $APP_ID
                . "&redirect_uri=" . urlencode( $post_login_url)
                . "&scope=publish_stream,email";

    echo("<script>top.location.href='" . $dialog_url . "'</script>");
}
else 
{
    $token_url = "https://graph.facebook.com/oauth/access_token?"
                    . "client_id=" . $APP_ID
                    . "&redirect_uri=" . urlencode( $post_login_url)
                    . "&client_secret=" . $APP_SECRET
                    . "&code=" . $_REQUEST["code"];

    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];
}