0

我正在按照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(红色箭头)的地方。这是正确的,对吧? 在此处输入图像描述

4

2 回答 2

1

好的,这就是我解决这个问题的方法,将 [这里] [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

在浏览器的 URL 框中会有一个非常快的输出,复制速度很快。这个输出应该是这样的

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

3)使用 CODE 获取用户的短期访问令牌(我想它可以与 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中验证

这就是它对我有用的方式。

于 2013-11-11T19:42:05.760 回答
0

您忘记替换APP-ID为相关的 App 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'];
}
于 2013-11-08T20:07:16.597 回答