2012-04-15 118 views
2

以下是可以正常運行的代碼,如果我將/pageid/feed轉換爲facebook->api,但當我將其更改爲直接將圖片上傳到我的Facebook相冊時,工作。請讓我知道,我在下面的代碼做錯了:Facebook API適用於/ feed,但不適用於/ photos

// Works fine 
$status = $facebook->api("/194458563914948/feed", 'post', $attachment); 

// Does not work 
$status = $facebook->api("/196878530339618/photos", 'post', $attachment); 

全部來源

<?php 

require 'src/facebook.php'; 

$app_id = "332267477347"; 
$app_secret = "xxxx"; 

$facebook = new Facebook(array(
'appId' => $app_id, 
'secret' => $app_secret, 
'cookie' => true, 
'fileUpload' => true, 

)); 

$facebook->setFileUploadSupport(true); 


$user = $facebook->getUser(); 
//echo $user; 

if(($facebook->getUser())==0) 
{ 
header("Location:{$facebook->getLoginUrl(array('scope' => 'photo_upload,user_status,publish_stream,user_photos,manage_pages'))}"); 
exit; 
} 
else { 
$accounts_list = $facebook->api('/me/accounts'); 
echo "i am connected"; 
} 
    $valid_files = array('image/jpeg', 'image/png', 'image/gif'); 


//to get the page access token to post as a page 
foreach($accounts_list['data'] as $account){ 
     if($account['id'] == 194458563914948){  // my page id =123456789 
     $access_token = $account['access_token']; 
     echo "<p>Page -- Access Token: $access_token</p>"; 
     } 
    } 

//posting to the page wall 

if (isset($_FILES) && !empty($_FILES)) 
{ 
$aid = '421539304540205'; 
$folder = "pak/".$_FILES['pic']['name']; 
$fold = 'http://snowdrop.com.pk/fb/'.$folder; 
echo $fold."<br>"; 
if(move_uploaded_file($_FILES['pic']['tmp_name'], $folder)) 
{ 
#Upload photo here 
    $img = realpath($_FILES["pic"]["tmp_name"]); 
$attachment = array('message' => $_POST['textfield'], 
          'aid' => $aid, 
    'source' => '@' . $img, 
           'access_token' => $access_token, 


       ); 
$status = $facebook->api("/421539304540205/photos", 'post', $attachment); 

echo $status; 
var_dump($status); 

} 
else{ 
    echo 'Only jpg, png and gif image types are supported!'; 

} 
} 
?> 
<body> 
<!-- Form for uploading the photo --> 
<div class="main"> 
    <p>Select a photo to upload on Facebook Fan Page</p> 
    <form method="post" action="" enctype="multipart/form-data"> 
    <p>Select the image: <input type="file" name="pic" /> 
    <br /> 
    <label>Description 
    <input type="text" name="textfield" id="textfield" /> 
    </label> 
    </p> 
    <p><input class="post_but" type="submit" value="Upload to my album" /></p> 
    </form> 
</div> 
</body> 

回答

4

您使用/406221796071956 /照片是錯誤的,這就是爲什麼它不工作的路徑。

的原因,這條道路是錯誤的,是是圖片的ID,看到自己的Graph API Explorer for 406221796071956說:

「類型」: 「照片」

如果你想要發佈到該相冊,然後使用/196878530339618 /照片,因爲它是專輯:Graph API Explorer for 196878530339618

「類型」: 「專輯」


編輯

請參考https://developers.facebook.com/docs/reference/api/album/#photos將照片添加到相冊。


第二編輯

按照Album object的文檔:

can_upload

確定UID是否可以上傳到相冊,如果用戶擁有返回true專輯,專輯未滿,並且 該應用可以將照片添加到專輯

因此,您需要專輯未滿,才能成爲相冊的擁有者,並且擁有正確的上傳權限。

+0

我使用這個按照你檢查我的代碼porblem,但仍然不工作:( --------------------------- - $ status = $ facebook-> api(「/ 196878530339618/photos」,'post',$ attachment); – 2012-04-16 11:07:06

+1

您能更具體嗎?「不能正常工作」是什麼意思?您是否收到錯誤信息? – 2012-04-16 11:08:07

+0

我想要做的是我使用上面的腳本,當我點擊提交然後圖像出現在我的牆上與它的描述和該圖像可以viwed變焦在Facebook粉絲頁因爲當我使用/ pageid/feed然後通知確實來到牆上,但帶有非常小的圖標圖像及其背後的任何鏈接(它不能在縮放在那裏查看)... – 2012-04-16 11:16:31

相關問題