Facebook graph api 批量将多张照片上载到多个用户帐户

Facebook graph api 批量将多张照片上载到多个用户帐户,facebook-graph-api,batch-processing,Facebook Graph Api,Batch Processing,我有一个数组,如下所示: $userImages = array( '100000000000001' => array( '..../image01.jpg', '..../image02.jpg', '..../image03.jpg', ), '100000000000002' => array( '..../image04.jpg', '..../image05.jpg',

我有一个数组,如下所示:

$userImages = array(
    '100000000000001' => array(
        '..../image01.jpg',
        '..../image02.jpg',
        '..../image03.jpg',
    ),
    '100000000000002' => array(
        '..../image04.jpg',
        '..../image05.jpg',
        '..../image06.jpg',
    ),
);
/** @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;
其中包含FB用户ID作为密钥,然后将一组图像上载到每个用户帐户

我的上传代码如下所示:

$userImages = array(
    '100000000000001' => array(
        '..../image01.jpg',
        '..../image02.jpg',
        '..../image03.jpg',
    ),
    '100000000000002' => array(
        '..../image04.jpg',
        '..../image05.jpg',
        '..../image06.jpg',
    ),
);
/** @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\u token下,但是当调用$facebook-api()时,我从facebook获得以下信息:

有人知道为什么我会犯这些错误吗?我是否在错误的位置添加了用户访问令牌

有人知道为什么我会犯这些错误吗?我是否在错误的位置添加了用户访问令牌

您是否确实添加了访问令牌,而不仅仅是一个
null

错误消息并不是说您使用了错误的或过期的用户访问令牌,而是说需要用户访问令牌


所以我猜,因为您没有首先将实际的令牌放入单独的批处理请求部分,因此会出现回退到您的应用程序访问令牌的情况,因此会出现特定的错误消息。

必须将访问令牌添加到根目录中的$params关联数组中,而不是添加到每个图像项中

您的逻辑很好,但是对于每个请求,您都需要将访问令牌放在主体中

例如:

...
$request = array(
  'method' => 'post',
  'relative_url' => "{$userId}/photos",
  'attached_files' => "file{$count}",
  'body' => "access_token={$this->getUserAccessToken($userId)}",
);
...

当你上传一张图片的时候,这个过程非常完美,所以我已经获得了所需的权限。看起来你不能一次上传到多个用户帐户。我将访问令牌移动到$params对象的根目录下,图像上载成功。我试图将用户访问令牌添加到单个图像上载项目中,结果证明,这种方式不起作用。当我将用户访问令牌添加到$params的根目录时,上载成功,但这意味着我无法在一个批处理过程中上载到多个帐户,看起来是这样。