尝试扩展从 Facebook JS SDK 代码收到的 auth_token 时出现以下错误。
{ "error": { "message": "Cannot access application using the specified access_token", "type": "OAuthException", "code": 1 } }
如果我更改 URL 以包含使用 Graph API 资源管理器生成的令牌,它工作正常。
有任何想法吗?
尝试扩展从 Facebook JS SDK 代码收到的 auth_token 时出现以下错误。
{ "error": { "message": "Cannot access application using the specified access_token", "type": "OAuthException", "code": 1 } }
如果我更改 URL 以包含使用 Graph API 资源管理器生成的令牌,它工作正常。
有任何想法吗?
我们在测试我们的应用程序时遇到了这样的问题。Facebook 的测试用户在扩展访问令牌上有一个错误,但真实用户没有。
问题是:我们有国家限制,而测试用户没有国家。
所以也要检查你的应用程序的限制。
我遇到了这个问题,并直接从 FB 工程师那里获得了一些支持。此错误的最可能原因是用户的“人口统计检查”。
我们的应用程序有一个年龄限制,因为它与酒精有关。某些用户的个人资料没有包含足够的信息,无法让 FB 确保他们超过其所在位置的饮酒年龄,因此会话创建失败。为什么这只发生在这个电话上而不是以前的电话上,我不知道。
您的应用程序是否有年龄限制或类似的东西?
使用调试器调试令牌并确保它与上面提供的 APP ID 匹配。
消息很清楚,您使用的令牌不适用于 access_token。
可能是您将令牌与 Graph API Explorer 应用程序或其他应用程序混合在一起。
使用以下代码生成代码;获得访问代码后,您可以将其交换为扩展代码。代码的最后一部分显示了如何调试:
$app_id = "XXXXXXXXX";
$app_secret = "YYYYYYYYYYYY";
$redirect_url = "http://www.example.com/page.php";
$fb_code = $_REQUEST['code'];
if(!$fb_code)
{
$login_dialog_url= "http://www.facebook.com/dialog/oauth?"
. "client_id=" . $app_id
. "&redirect_uri=" . urlencode( $redirect_url)
. "&scope=read_friendlists,read_stream,xmpp_login,user_online_presence,friends_online_presence,create_event,publish_stream&response_type=code";
echo("<script>location.href='" . $login_dialog_url . "'</script>");
}
else
{
$token_url="https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id
. "&redirect_uri=". urlencode($redirect_url)
. "&client_secret=" . $app_secret
. "&code=" . $fb_code;
$response = file_get_contents($token_url);
parse_str($response, $params);
$access_token = $params['access_token'];
echo 'Access Token: '.$access_token.'<br>';
如果需要,在此处生成扩展代码
if($access_token)
{
$token_url="https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id
. "&redirect_uri=". urlencode($redirect_url)
. "&client_secret=" . $app_secret
. "&grant_type=fb_exchange_token"
. "&fb_exchange_token=" . $access_token;
$response = file_get_contents($token_url);
parse_str($response, $params);
$extended_access_token = $params['access_token'];
echo 'Extended Access Token: '.$extended_access_token;
}
在这里调试扩展代码:
$expires = "https://graph.facebook.com/debug_token?input_token=$access_token&access_token=$extended_access_token";
$response = file_get_contents($expires);
echo "<pre>";
print_r(json_decode($response));
echo "</pre>";