php - Facebook API 对于/feed 可以正常工作,但对于/photos 则不行

标签 php facebook facebook-graph-api facebook-php-sdk

如果我将 /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/

相关文章:

facebook - 在 Facebook 上分享的人列表

javascript - 是否有任何 REST API 可以从公共(public) Facebook 页面获取评分?

php - 设置PHP项目自动GIT部署

php - 在Symfony中获得Elasticsearch分数

java - 获取超过 25 个帖子 RestFb 时出现异常

ios - Facebook SDK 3.1 - 验证访问 token 时出错

ios - 在 Facebook Developers App 上添加多个 iOS 包 ID 的通配符?

facebook - 如何使用 facebook graph api 获取用户的所有事件?

php - 在多个表中添加记录 PHP MYSQL

php - 这个查询迭代是否可能