我正在按照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(红色箭头)的地方。那是对的,对吗?
答案 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'];
}