0

友達リストを取得しようとしていますが、次のエラーが発生します。

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は空です。正常に動作し、突然停止しました...アプリには既に権限があり、最新のPHPSDKv3.0.1を使用しています

私を助けてください...私はこの問題に夢中になっています...

ありがとう、バー。

4

3 に答える 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, '-_', '+/'));
 }
于 2011-07-14T17:27:08.213 に答える
-1

SDK を v3.0 にアップグレードする必要があります。

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

編集: v.3.0 を使用しているため、構成が間違っています。コンストラクターの $cookie パラメーターはもうありません。ドキュメントの改訂をお勧めします。

于 2011-07-14T17:26:10.613 に答える