Facebook access_token为空

问题描述 投票:0回答:3

我正在尝试获取朋友列表,我收到此错误:

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

请帮助我......我对这个问题感到疯狂......

谢谢,酒吧。

facebook access-token
3个回答
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, '-_', '+/'));
 }

0
投票

你应该在构造函数中添加$this->load->library('facebook');


-1
投票

您需要将SDK升级到v3.0:

https://github.com/facebook/php-sdk

编辑:由于你使用的是v.3.0,你的构造是错误的......构造函数没有更多的$ cookie参数。我建议修改文档。

© www.soinside.com 2019 - 2024. All rights reserved.