2012-04-15 77 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

相关问题