2012-07-17 49 views
0

我遇到了使用最新的Facebook PHP SDK上傳圖片到Facebook上的用戶相冊的問題。我可以上傳一張圖片,但在第一張圖片上傳後,它不會讓我上傳第二張圖片(我已經使用與第一張圖片相同的圖片以及完全不同的圖片進行了嘗試)。Facebook的PHP SDK無法上傳多個圖像

我認爲它不是一個認證的問題,因爲我能夠上傳第一圖像和檢查什麼用戶被認證後,我得到如下:

Array (
    [data] => Array (
     [0] => Array (
      [installed] => 1 
      [status_update] => 1 
      [photo_upload] => 1 
      [video_upload] => 1 
      [email] => 1 
      [create_note] => 1 
      [share_item] => 1 
      [publish_stream] => 1 
      [publish_actions] => 1 
      [user_likes] => 1 
      [user_photos] => 1 
     ) 
    ) 
) 

這是我目前的代碼通過上傳自己的形象:

<?php 
    $mee = $facebook->api('/me'); 
    //echo $mee['name']; // test to make sure FB is connected 
    $item = '202'; 
    $filename = 'bc2a846f1bfafa8d811390089a91bcfa.jpeg'; 

    $qry = "SELECT albumID FROM os_users WHERE user_fbid = '".$_SESSION['fbid']."'"; 
    $result = mysql_query($qry); 
    $alb = mysql_fetch_assoc($result); 

    // Check if Album already exists 
    if($alb['albumID'] != '0'){ 
     $album_id = $alb['albumID']; 
    } else { 
     echo 'Creating Album'; 
     //Create an album 
     $album_details = array(
      'message' => 'Album Message', 
      'name' => 'Album Name' 
     ); 

     $create_album = $facebook->api('/me/albums', 'post', $album_details); 

     // Get album ID of the album you've just created 
     $album_id = $create_album['id']; 

     $qry = "UPDATE scav_users SET user_albumid = '".$album_id."' WHERE user_fbid = '".$_SESSION['ufbid']."'"; 
     $result = mysql_query($qry); 
    } 

    // Upload Image 
    $facebook->setFileUploadSupport(true); 
    $photo_details = array(
     'message' => '#'.$item.': Item Description' 
    ); 
    $photo_details['image'] = '@' . realpath('../uploads/'.$filename); 

    try { 
     $upload_photo = $facebook->api('/'.$album_id.'/photos', 'post', $photo_details); 
    } catch (FacebookApiException $e){print_r($e);} 
    //$upload_photo = $facebook->api('/me/photos', 'post', $photo_details); 
    $photo_id = $upload_photo['id']; 
    echo $photo_id; 
?> 

是這個腳本的結果後,我嘗試上傳另一張照片的誤差如下:

FacebookApiException Object (
    [result:protected] => Array (
     [error] => Array (
      [message] => An unexpected error has occurred. Please retry your request later. 
      [type] => OAuthException 
      [code] => 2 
     ) 
    ) 
    [message:protected] => An unexpected error has occurred. Please retry your request later. 
    [string:Exception:private] => 
    [code:protected] => 0 
    [file:protected] => [locationtofile]base_facebook.php 
    [line:protected] => 1106 
    [trace:Exception:private] => Array (
     [0] => Array (
      [file] => [locationtofile][base_facebook.php 
      [line] => 810 
      [function] => throwAPIException 
      [class] => BaseFacebook 
      [type] => -> 
      [args] => Array (
       [0] => Array (
        [error] => Array (
         [message] => An unexpected error has occurred. Please retry your request later. 
         [type] => OAuthException 
         [code] => 2 
        ) 
       ) 
      ) 
     ) 
     [1] => Array (
      [function] => _graph 
      [class] => BaseFacebook 
      [type] => -> 
      [args] => Array (
       [0] => //photos 
       [1] => post 
       [2] => Array (
        [message] => #202: Item Description 
        [image] => @[locationtofile]bc2a846f1bfafa8d811390089a91bcfa.jpeg 
       ) 
      ) 
     ) 
     [2] => Array (
      [file] => [locationtofile][base_facebook.php 
      [line] => 587 
      [function] => call_user_func_array 
      [args] => Array (
       [0] => Array (
        [0] => Facebook Object (
        [appId:protected] => 435146213185130 
        [appSecret:protected] => 96797309425855946b0b495f9adf6252 
        [user:protected] => 
        [signedRequest:protected] => Array (
         [algorithm] => HMAC-SHA256 
         [code] => 2.AQBPPU0myCWfUCPt.3600.1342501200.1-100003953568312|8LHGtxCV0OZZfE-826am15ODSZo 
         [issued_at] => 1342495041 
         [user_id] => 100003953568312 
        ) 
        [state:protected] => 
        [accessToken:protected] => AAAGLw192VmoBABK5rNEsnoROQHvcFuKt720JuUV2DP20llDD1Ny9NPLE2ZBVi4WIypB5n1yfodv7VBWFTrTi0dF6Ncm3PGIxDK2yCmbJPJO14xH7C 
        [fileUploadSupport:protected] => 1 
       ) 
       [1] => _graph 
      ) 
      [1] => Array (
       [0] => //photos 
       [1] => post 
       [2] => Array (
        [message] => #202: Item Description 
        [image] => @[locationtofile]bc2a846f1bfafa8d811390089a91bcfa.jpeg 
       ) 
      ) 
     ) 
    ) 
    [3] => Array (
     [file] => [locationtofile][uploadtoFB.php 
     [line] => 44 
     [function] => api 
     [class] => BaseFacebook 
     [type] => -> 
     [args] => Array (
      [0] => //photos 
      [1] => post 
      [2] => Array (
       [message] => #202: Item Description 
       [image] => @[locationtofile]bc2a846f1bfafa8d811390089a91bcfa.jpeg 
      ) 
     ) 
    ) 
) 
[previous:Exception:private] => 
) 

任何幫助表示讚賞。

注意:我的應用程序仍處於沙盒階段,我正在本地服務器上運行它。

回答

0

如果我正在讀你的代碼,你有一個$ session ['fbid'],這是album_id,是否正確?要解決我會想辦法讓這種關聯更爲清晰:

  • 查詢的Facebook的ID(不是你的DB)
  • 後成功的結果(檢查FacebookAPIException)
  • 發佈下一張照片,該album_id

另外,你不是用try/catch檢查每個API調用,這是一個很好的做法。

在清除之前,我也不會收到消息。據瞭解,Facebook已經爲此發佈了旗幟。

這很明顯是一個驗證問題,所以還要將access_token作爲每個api調用中的單獨參數來推送。

+0

FBID實際上是當前用戶的Facebook ID。我想我現在並不需要這麼做,現在我想到了。 我一定會實施你的建議,看看是怎麼回事。欣賞您的輸入 – 2012-07-17 06:44:33

+0

好的,有一個問題是沒有嘗試/抓住相冊ID檢索周圍,你應該這樣做只是爲了盡責/排除故障。而且,你不應該依賴你自己的數據庫,但每次檢查(用戶可以擦除它們)。之前我有過一些奇怪的未完成狀態的專輯(這是我懷疑的,在這裏)。 – 2012-07-17 07:23:48

+0

哦所以它應該是persons_ID而不是albums_ID?我認爲它應該是albums_id(我剛剛創建的那個)。如果我上傳到該人的ID,那麼使用'$ facebook-> api('/ me/photos','post',$ photo_details);'是嗎? 另外,你可以幫助指導我如何推access_token?我嘗試添加參數:''access_token'=> $ access_token'($ access_token是用戶訪問令牌)。我仍然遇到錯誤 – 2012-07-17 07:27:21