我正在为一个活动建立一个小网站。我们的想法是将来自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
当我尝试使用用户访问令牌时,一切正常。但是当我对令牌进行硬编码时,这对其他用户不起作用。当我尝试服务器为我解析的令牌时,我得到了无效的令牌操作。有人知道解决方案吗? 这是一个公共活动,我不希望用户在他/她知道谁参加之前登录?
这有可能吗? 感谢名单!
答案 0 :(得分:0)
为什么不为自己获取访问令牌,然后在应用程序中对其进行硬编码(假设它在安全服务器上运行,而其他任何人都无法窃取凭据)。然后,访问该页面的任何人都可以使用您自己的访问令牌查看访客列表,该令牌有权查看该列表。
client_credentials grant类型不是用于访问用户数据,而是用于访问应用程序数据。我不知道应用程序的其余部分是如何工作的,但我假设您需要一个用户访问令牌来查看用户数据。
答案 1 :(得分:0)
您是否在硬编码时编码令牌? |应该是%7C。 不能想到目前可能出现的任何其他问题
答案 2 :(得分:0)
我解决这个问题的方法是指定offline_access权限,它会生成一个永不过期的访问令牌,因此您可以无限期地使用它。然后,您理论上只会授权您的Facebook帐户从中提取事件数据。然后,您可以查看并向您的网站提供活动详细信息。