我可以通过将数据发布到
来使用facebook graph api创建相册http://graph.facebook.com/ALBUM_ID/albums
它返回一个id,这不是专辑ID。
我以两种方式证实了它
http://graph.facebook.com/{ALBUM_ID_I_RECIEVED}/photos
,但照片永远不会发布到新创建的相册,而是发布到默认应用相册。我需要知道真实的专辑ID,以便我可以将图像上传到新创建的专辑。
答案 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']
或者你喜欢的任何方法。
结果:
答案 1 :(得分:2)
我实际上遇到了完全相同的问题,但是有了事件。会发生什么是Facebook没有返回实际的事件ID(在您的情况下,相册ID),而是有一个小的偏移量(最多10个)。所以,这是您需要遵循的工作流程(为了使其工作!):</ p>
fb_aid
保存在您的数据库中。$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。