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的根目录时,上载成功,但这意味着我无法在一个批处理过程中上载到多个帐户,看起来是这样。