0

尝试扩展从 Facebook JS SDK 代码收到的 auth_token 时出现以下错误。

URL : https://graph.facebook.com/oauth/access_token?client_id=229083900472938&client_secret=XXXXXXXXX&grant_type=fb_exchange_token&fb_exchange_token=AAADQWcCC7moBAPM9OlZCpOYnZBoxWnX7MwpP86HHMQM2QAe1DkW9cAI3AaSxVXEPNo7NOnljYCawSg3pgLWtvRph9dhfgZBqK4vt4YB5ZAYCpaiJu71o

{ "error": { "message": "Cannot access application using the specified access_token", "type": "OAuthException", "code": 1 } }

如果我更改 URL 以包含使用 Graph API 资源管理器生成的令牌,它工作正常。

有任何想法吗?

4

4 回答 4

1

我们在测试我们的应用程序时遇到了这样的问题。Facebook 的测试用户在扩展访问令牌上有一个错误,但真实用户没有。

问题是:我们有国家限制,而测试用户没有国家。

所以也要检查你的应用程序的限制。

于 2014-10-24T08:31:51.103 回答
1

我遇到了这个问题,并直接从 FB 工程师那里获得了一些支持。此错误的最可能原因是用户的“人口统计检查”。

我们的应用程序有一个年龄限制,因为它与酒精有关。某些用户的个人资料没有包含足够的信息,无法让 FB 确保他们超过其所在位置的饮酒年龄,因此会话创建失败。为什么这只发生在这个电话上而不是以前的电话上,我不知道。

您的应用程序是否有年龄限制或类似的东西?

于 2013-12-07T05:53:55.710 回答
0

使用调试器调试令牌并确保它与上面提供的 APP ID 匹配。

消息很清楚,您使用的令牌不适用于 access_token。

可能是您将令牌与 Graph API Explorer 应用程序或其他应用程序混合在一起。

于 2013-03-06T00:30:19.657 回答
0

使用以下代码生成代码;获得访问代码后,您可以将其交换为扩展代码。代码的最后一部分显示了如何调试:

$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>";
于 2013-10-03T13:44:54.377 回答