2012-05-28 40 views
0

你能告訴我我做錯了什麼。我使用PHP。嘗試將照片上傳到用戶個人資料..我獲得權限,它的工作原理。但上傳不起作用,我嘗試了很多方法。那麼我做錯了什麼?FB開發 - 上傳一張照片到用戶的個人資料

<?php 

    include_once 'facebook.php'; 

     $facebook = new Facebook(array(
     'appId' => 'ID', 
     'secret' => 'SECRET', 
     'cookie' => true, 
     'domain' => 'DOMAIN', 
     'fileUpload' => 'true' 
     )); 



     $session = $facebook->getSession(); 

     if (!$session) { 

     $loginUrl = $facebook->getLoginUrl(array(
     'canvas' => 1, 
     'fbconnect' => 1, 
     'display' => 'page', 
     'req_perms' => 'user_likes, publish_stream', 
     'next' => 'NEXTURL' 
    )); 

     echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 

    } else{ 


    try { 

     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 
     $token = $session['access_token'];//here I get the token from the $session array 
     $album_id = 'ALBUM ID'; /// what should I write here? 

     //upload your photo 
    $file= 'logo.png'; 
    $args = array(
     'message' => 'Photo from app', 
    ); 
    $args[basename($file)] = '@' . realpath($file); 

    $ch = curl_init(); 
    $url = 'https://graph.facebook.com/'.$album_id.'/photos?access_token='.$token; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
    $data = curl_exec($ch); 

    //returns the id of the photo you just uploaded 
    print_r(json_decode($data,true)); 



    } catch(FacebookApiException $e){ 
    echo "Error:" . print_r($e, true); 
    } 
    } 
    ?> 

在此先感謝

+0

定義「不工作」。您是否看到錯誤,警告,其他輸出 –

+0

沒有錯誤..首先用戶點擊「轉到應用程序」,然後給出publish_stream權限,然後瀏覽器被重定向到絕對清空/空的php頁面。你能告訴我,我應該寫1)$ album_id; 2)$ file ='logo.png'; < - 是否正確?我應該在這裏提到照片的網址嗎?在此先感謝 –

回答

0

您必須添加屬性的FileUpload ==真到了Facebook的-對象:

$facebook = new Facebook(array(
    'appId' => 'ID', 
    'secret' => 'SECRET', 
    'cookie' => true, 
    'domain' => 'DOMAIN', 
    'fileUpload' => true 
)); 

UPDATE:

我一直使用此代碼上傳照片:

$photo= $facebook->api(array('method'=>'photos.upload', 
      'caption'=>SOME_TEXT, 
      'file'=>'@'.$file)); 
+0

我添加它們..一切都是正確的.. –

+0

你的意思是,它現在的工作?然後請將問題標記爲已回答。 –

+0

不,我的意思是它已經添加了..你能告訴我,我應該寫什麼1)$ album_id; 2)$ file ='logo.png'; < - 是否正確?我應該在這裏提到照片的網址嗎?在此先感謝 –

0

您可以試試這個:

$args = array('message' => $mess, 
); 
    $args['image'] = '@' . realpath($file.".jpeg"); 


    $facebook->setFileUploadSupport(true); 
    try 
    { 
     if(!isset($_GET['a'])) 
      { 
      $data = $facebook->api('/me/photos', 'post', $args); 
      } 
      // echo "<br/>Image posted. <a href=\"http://www.facebook.com/photo.php?fbid=".$data['id']."\" target=\"_blank\">Click here to view</a>. Thanks for using this application."; 
     } 
     catch(FacebookApiException $e) 
     { 
     var_dump($e); 
     } 

這是直接摘錄自工作代碼。

0

試試這個

$args = array('message' => 'Photo Upload'); 
$args['image'] = '@' . realpath($FILE_PATH); 
$data = $facebook->api("/{$album_id}/photos", 'post', $args); 

注意:如果你想創建一個新的專輯名稱相同的應用程序名稱,上傳有,那麼你必須使用

$facebook->api("/me/photos", 'post', $args); 
相關問題