Facebook access_token无效

时间:2011-07-31 17:43:45

标签: php javascript facebook-graph-api oauth

我正在为一个活动建立一个小网站。我们的想法是将来自facebook活动的参加人员添加到本网站。问题是参加服务需要access_token。我不希望用户登录到应用程序,我只想使用app access_token。但这似乎不起作用。

我有以下用于接收access_token的PHP代码:

// get facebook auth_token
$FB_APP_ID = '****';
$FB_APP_SECRET = '***';
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $FB_APP_ID . "&client_secret=" . $FB_APP_SECRET . "&grant_type=client_credentials";
$app_token = file_get_contents($token_url);
parse_str($app_token); // creates: $access_token

在javascript中我使用以下代码:

/**
 * Gets all the attending Users
 * @param function callback: the function to call, when data loading is ready
 * @param function callback: the function to call, when data loading is broken
 * @return void
 */
this.getAttending = function(callback, errorHandler) 
{
    FB.api('/' + this.eventId + '/attending', function(response) {
        if(response.error) {
            errorHandler(response.error['message']);
        } else {
            callback(response.data);
        }
    } , {access_token: facebook.accessToken} );    
}

我收到错误: 无效的OAuth访问令牌。

访问令牌如下所示: 111737995591905 | l9e3niEMM1RsIUhwHZv3pn3c19M

用户访问令牌如下所示: 145634995501895 | 2.AQBcWfbvdzhloLYc.3600.1312138800.1-1146858041 | cjCkHZqquyyFyX2dY0q2YCaSyy0

当我尝试使用用户访问令牌时,一切正常。但是当我对令牌进行硬编码时,这对其他用户不起作用。当我尝试服务器为我解析的令牌时,我得到了无效的令牌操作。有人知道解决方案吗? 这是一个公共活动,我不希望用户在他/她知道谁参加之前登录?

这有可能吗? 感谢名单!

3 个答案:

答案 0 :(得分:0)

为什么不为自己获取访问令牌,然后在应用程序中对其进行硬编码(假设它在安全服务器上运行,而其他任何人都无法窃取凭据)。然后,访问该页面的任何人都可以使用您自己的访问令牌查看访客列表,该令牌有权查看该列表。

client_credentials grant类型不是用于访问用户数据,而是用于访问应用程序数据。我不知道应用程序的其余部分是如何工作的,但我假设您需要一个用户访问令牌来查看用户数据。

答案 1 :(得分:0)

您是否在硬编码时编码令牌? |应该是%7C。 不能想到目前可能出现的任何其他问题

答案 2 :(得分:0)

我解决这个问题的方法是指定offline_access权限,它会生成一个永不过期的访问令牌,因此您可以无限期地使用它。然后,您理论上只会授权您的Facebook帐户从中提取事件数据。然后,您可以查看并向您的网站提供活动详细信息。