0

現在のスクリプトでユーザーのアルバムに写真をアップロードしようとしています:

$this->facebook->api('/me/photos?access_token='.$user->access_token, 'post', $args);

$user->access_token はユーザーのアクセス トークンであり、Facebook Graph API Explorer ツールを使用して、まだ有効である (2 か月まで) ことを確認します。

ただし、上記のスクリプトで API リクエストを作成すると、コンソールは常に次のように返されます。

Fatal error:  Uncaught OAuthException: An active access token must be used to query information about the current user.

私がやっていることは次のとおりです。

  • アプリの認証を解除する
  • アプリの再認証
  • 許可をリクエストする (publish_stream,photo_upload,user_photos)
  • FB SDK を最新バージョンに更新する

完全なコードは次のとおりです。

    $user = $this->User_model->get_access_token($this->input->post('fb_id'));

    foreach($this->input->post('media') as $media_id)
    {
        $media = $this->Media_model->get_media($media_id);

        $args = array('message' => 'Photo Caption');
        $args['image'] = '@' . realpath(FCPATH.'uploads/booth_1/'.$media->file);

        $data = $this->facebook->api('/me/photos?access_token='.$user->access_token, 'post', $args);
        print_r($data);
    }

何か助けはありますか?

参考までに、私はコードイグナイターを使用しています。実際、私は数時間前に試していましたが (うまくいきました)、今はそうではありません。

ありがとう。

4

1 に答える 1

0

組み込みの $facebook->api() を使用せずに手動で解決しましたが、代わりに curl を使用しています。

$filename = '@' . realpath(FCPATH.'uploads/'.$media);
$url = "https://graph.facebook.com/".$user->fb_id."/photos";

$ch = curl_init($url);

$attachment =  array('access_token' => $user->access_token,
                'app_id'            => APP_ID,
                'name'              => "Upload",
                'fileUpload'        => true,
                'message'           => "Message",
                'image'             => $filename,
          );

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_CAINFO, PATH TO FB SDK CERT FOR SSL);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

$result = curl_exec($ch);

if ($result === FALSE) {
    die("Curl failed: " . curl_error($ch));
}

curl_close ($ch);
于 2013-06-27T07:10:12.880 に答える