【问题标题】:Facebook API works fine for /feed, but not for /photosFacebook API 适用于 /feed,但不适用于 /photos
【发布时间】:2012-04-15 19:25:11
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您使用的路径/406221796071956/photos 是错误的,这就是它不起作用的原因。

    这个路径不对的原因,是406221796071956是一张图片的id,你自己看吧,Graph API Explorer for 406221796071956说:

    “类型”:“照片”

    如果您想发布到该相册,请使用 /196878530339618/photos,因为它是相册:Graph API Explorer for 196878530339618

    “类型”:“专辑”


    编辑

    添加照片到相册请参考https://developers.facebook.com/docs/reference/api/album/#photos


    第二次编辑

    根据Album object的文档:

    can_upload

    判断UID是否可以上传到相册,如果用户拥有相册,相册未满,返回true 该应用可以将照片添加到相册

    因此,您需要相册不要满,成为相册的所有者并拥有正确的上传权限。

    【讨论】:

    • 我根据您使用我的代码检查的问题使用了它,但它仍然无法正常工作:( ------------------------ ------ $status = $facebook->api("/196878530339618/photos", 'post', $attachment);
    • 你能说得更具体点吗? “不工作”究竟是什么意思?您收到错误消息吗?
    • 我要做的就是使用上面的脚本,当我点击提交时,图像会出现在我的墙上,并附有描述,当我在 Facebook 粉丝专页上放大时可以看到该图像使用 /pageid/feed 然后通知确实出现在墙上,但图标图像非常小,后面有任何链接(无法放大查看)...
    • 不,我没有收到错误消息,这是我页面的链接snowdrop.com.pk/fb/abc.php
    • 链接替换 ​​ALBUMID:snowdrop.com.pk/fb/abc.php 并且此链接包含带有 /pageid/feed 的代码行(工作正常,但存在链接图像的小问题)snowdrop.com.pk/fb/1.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    相关资源
    最近更新 更多