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 回答