我正在尝试获取好友列表并收到此错误:
Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /server/url/base_facebook.php on line 970
这是我正在使用的代码:
$facebook = new Facebook(array(
'appId' => $appID,
'secret' => $appSecret,
'cookie' => true, // enable optional cookie support
));
$result = $facebook->api('/me/friends/',array('access_token' => $facebook->access_token));
这是我在$ facebook变量中得到的数据:
Facebook Object
(
[appId:protected] => 220........
[apiSecret:protected] => 2162e6c1b771......
[user:protected] =>
[signedRequest:protected] =>
[state:protected] => 894ad3b36c2ebdcbcf6d4f110641dd4f
[accessToken:protected] =>
[fileUploadSupport:protected] =>
)
由于某种原因,access_token为空。 它工作正常,突然停止了...... 该应用已拥有权限,我正在使用最新的PHP SDK v3.0.1
请帮助我......我对这个问题感到疯狂......
谢谢, 杆
答案 0 :(得分:0)
好像你需要首先解析已签名的请求是iframe应用程序还是网站?
如果它是iframe应用并且用户已经授权
试试这个。
public function parse_signed_request($signed_request)
{
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$sig = $this->base64_url_decode($encoded_sig);
$data = json_decode($this->base64_url_decode($payload), true);
if(strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
throw new Exception('bad algorithm');
}
$expected_sig = hash_hmac('sha256', $payload, $this->app_secret, $raw = true);
if($sig !== $expected_sig) {
throw new Exception('Bad signed JSON');
}
return $data;
}
这将解析签名的请求。
你得到数据var_dump后,你会看到oauth_token ....
private function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
答案 1 :(得分:0)
您应该在构造函数中添加$this->load->library('facebook');
。
答案 2 :(得分:-1)
您需要将SDK升级到v3.0:
https://github.com/facebook/php-sdk
编辑:由于你使用的是v.3.0,你的构造是错误的......构造函数没有更多的$ cookie参数。我建议修改文档。