2012-08-15 59 views
1

我有一個數組,如下所示:其中包含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_token,但是當$ Facebook的API()被調用時,我得到以下回來從Facebook:

enter image description here

有誰知道爲什麼,我得到這些錯誤?我是否在錯誤的地方添加了用戶訪問令牌?

+0

在做一個圖片上傳,過程完美的作品,所以我有授予所需的權限。 – 2012-08-15 11:17:51

+1

看來你不能上傳到一批中的多個用戶帳戶。我將訪問令牌移動到$ params對象的根目錄,併成功上傳圖像。 – 2012-08-15 11:30:41

回答

2

access_token必須被添加到$ params關聯數組中,而不是每個圖像項目!

0

有誰知道爲什麼,我得到這些錯誤?我是否在錯誤的地方添加了用戶訪問令牌?

有你確信,你實際上在所有加入的訪問令牌,而不是也許只是一個null價值?

該錯誤信息不會說,你使用的錯誤過期用戶訪問令牌,但它說,一個用戶訪問令牌是必需的。

所以我猜,因爲你沒有真正把實際的令牌加入到單獨的批處理請求部分在首位,然後退回到您的應用程序訪問令牌發生,因此特定的錯誤消息。

+0

我試圖將用戶訪問令牌添加到單個圖片上傳項目,結果證明,這種方式並不奏效。當我將用戶訪問令牌添加到$ params的根目錄時,上傳成功,但這意味着我無法在一個批處理過程中上載到多個帳戶,所以看起來似乎。 – 2012-08-15 11:55:01

1

您的邏輯很好,但您需要將訪問令牌放入正文以滿足每個單獨的請求。

例如:

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