如果我将 /pageid/feed
传递给 facebook->api
,以下代码可以正常工作,但是当我更改它以将图像直接上传到我的Facebook相册,不行。请让我知道我在以下代码中做错了什么:
// 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>
最佳答案
您使用的路径/406221796071956/photos是错误的,这就是它不起作用的原因。
这个路径错误的原因是,406221796071956是图片的id,你自己看看,Graph API Explorer for 406221796071956说:
"type": "photo"
如果您想发布到该相册,请使用/196878530339618/photos,因为它是相册:Graph API Explorer for 196878530339618
"type": "album"
编辑
请引用https://developers.facebook.com/docs/reference/api/album/#photos用于将照片添加到相册。
第二次编辑
根据 Album object 的文档:
can_upload
Determines whether the UID can upload to the album and returns true if the user owns the album, the album is not full, and the app can add photos to the album
所以你需要相册不满,是相册的所有者,并且有正确的上传权限。
关于php - Facebook API 对于/feed 可以正常工作,但对于/photos 则不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165264/