将图像上传到特定的Facebook相册

时间:2010-12-22 12:50:21

标签: php facebook facebook-graph-api

我可以通过将数据发布到

来使用facebook graph api创建相册
http://graph.facebook.com/ALBUM_ID/albums

它返回一个id,这不是专辑ID。

我以两种方式证实了它

  1. 通过访问该专辑,援助与我收到的ID不同
  2. 并发布http://graph.facebook.com/{ALBUM_ID_I_RECIEVED}/photos,但照片永远不会发布到新创建的相册,而是发布到默认应用相册。
  3. 我需要知道真实的专辑ID,以便我可以将图像上传到新创建的专辑。

2 个答案:

答案 0 :(得分:9)

新的php-sdk工作得很好,我刚刚测试过,这是我的评论:

1.确保您拥有{em> publish_stream 的权限扩展权限,用于Album创建和Photo上传。

2.使用以下代码创建相册后,您将收到相册ID:

$post_data = array(
    'name'=>"My Test Album",
    'description'=>"My Test Album Desc"
    );
$data['album'] = $this->facebook->api("/me/albums", 'post', $post_data);  

P.S:我确认此ID不是您在浏览Facebook时看到的ID

3.现在我们需要使用您获得的相册“参考”ID上传图像:

$file = FCPATH . "assets/img/small1.jpg";
$post_data = array(
    "message" => "My photo caption",
    "source" => '@' . realpath($file)
);
$album_id = "473425002142";
$data['photo'] = $this->facebook->api("/$album_id/photos", 'post', $post_data);  

P.S:常量FCPATH是一个Codeigniter常数,你可以$_SERVER['DOCUMENT_ROOT']或者你喜欢的任何方法。

结果:
alt text

答案 1 :(得分:2)

我实际上遇到了完全相同的问题,但是有了事件。会发生什么是Facebook没有返回实际的事件ID(在您的情况下,相册ID),而是有一个小的偏移量(最多10个)。所以,这是您需要遵循的工作流程(为了使其工作!):<​​/ p>

  1. 发布相册。将返回的(假的)相册ID fb_aid保存在您的数据库中。
  2. 查询当前登录用户的所有已发布相册。
  3. 循环浏览返回的相册列表。
  4. 通过测试偏移量是否为&lt;
  5. 来确定实际的相册ID,如下所示。 10。
  6. 将实际相册ID保存在数据库中。

  7. $fbAlbums = $this->facebook->api(array('method' => 'photos.getalbums'));
    $myAlbums = $this->Album->find('all');
    for ($i = 0; $i < count($fbAlbums); ++$i) {    
        foreach ($myAlbums as $myAlbum) {
            $aidOffset = abs($fbAlbums[$i]['aid'] - $myAlbum['Album']['fb_aid']);
            if ($aidOffset != 0     // Prevents fixing an already fixed album id
                && $aidOffset < 10  // Checks if this is a FB ID Screw up
               ) {
                $myAlbum['Album']['fb_aid'] = $fbAlbums[$i]['aid'];
                $this->Album->save($myAlbum);
                break; // Little optimization
            }
        }
     }
    

    现在您的数据库已更新相册ID。欢呼!开发者:1。Facebook API:0。

    我知道这不漂亮。我知道它有很多潜在的问题。但它完成了工作,直到Facebook足够关注修复其API。