我有一个如下所示的数组:
$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获得以下回复:
有谁知道原因,我收到这些错误?我是否在错误的位置添加了用户访问令牌?
答案 0 :(得分:2)
必须将access_token添加到根目录中的$ params关联数组中,而不是添加到每个图像项目中!
答案 1 :(得分:1)
您的逻辑很好,但您需要将访问令牌放入正文中以满足每个请求。
例如:
...
$request = array(
'method' => 'post',
'relative_url' => "{$userId}/photos",
'attached_files' => "file{$count}",
'body' => "access_token={$this->getUserAccessToken($userId)}",
);
...
答案 2 :(得分:0)
有谁知道原因,我收到这些错误?我是否在错误的位置添加了用户访问令牌?
您是否已确定,实际添加了访问令牌,而不仅仅是null
值?
错误消息并未表示您使用了错误的或过期的用户访问令牌,但它表示用户访问令牌是必需的。
所以我猜,因为你并没有真正将实际令牌放入你的单独批处理请求部分,然后会发生你的应用程序访问令牌的回退,因此特定的错误消息。