1

次のような配列があります。

$userImages = array(
    '100000000000001' => array(
        '..../image01.jpg',
        '..../image02.jpg',
        '..../image03.jpg',
    ),
    '100000000000002' => array(
        '..../image04.jpg',
        '..../image05.jpg',
        '..../image06.jpg',
    ),
);

これには、FB ユーザー ID がキーとして含まれており、各ユーザー アカウントにアップロードする画像の配列が含まれています。

私のアップロードコードは次のようになります。

/** @var FacebookSessionPersistence $facebook */
$facebook = $this->container->get('fos_facebook.api');
$facebook->setFileUploadSupport(true);

$count = 1;

foreach ($userImages as $userId => $images) {
    $batch = array();
    $params = array();
    foreach ($images as $image) {
        $request = array(
            'method' => 'post',
            'relative_url' => "{$userId}/photos",
            'attached_files' => "file{$count}",
            'access_token' => $this->getUserAccessToken($userId)
        );
        $batch[] = json_encode($request);
        $params["file{$count}"] = '@' . realpath($image);
        $count++;
    }
}
$params['batch'] = '[' . implode(',', $batch) . ']';

$result = $facebook->api('/', 'post', $params);
return $result;

各画像のaccess_tokenの下にユーザー アクセス トークンを追加しましたが、 $facebook-api() が呼び出されると、Facebook から次の情報が返されます。

ここに画像の説明を入力

これらのエラーが発生する理由を知っている人はいますか? ユーザー アクセス トークンを間違った場所に追加していませんか?

4

3 に答える 3

2

access_token は、各画像アイテムではなく、ルートの $params 連想配列に追加する必要がありました!

于 2012-08-15T14:41:55.517 に答える
1

あなたのロジックは良いですが、個々のリクエストごとにボディ内にアクセス トークンを配置する必要があります。

例えば:

...
$request = array(
  'method' => 'post',
  'relative_url' => "{$userId}/photos",
  'attached_files' => "file{$count}",
  'body' => "access_token={$this->getUserAccessToken($userId)}",
);
...
于 2012-09-08T00:07:53.143 に答える
0

これらのエラーが発生する理由を知っている人はいますか? ユーザー アクセス トークンを間違った場所に追加していませんか?

おそらく単なる値ではなく、実際にアクセストークンを追加したことを確認しましたnullか?

このエラー メッセージは、間違ったユーザー アクセス トークンまたは期限切れのユーザー アクセス トークンを使用したことを示すものではなく、ユーザーアクセス トークンが必要であることを示しています。

最初に実際のトークンを個別のバッチ リクエスト パーツに実際に配置しなかったため、アプリ アクセス トークンのフォールバックが発生し、その特定のエラー メッセージが表示されると思います。

于 2012-08-15T11:51:18.657 に答える