Я могу создать альбом, используя facebook graph api, разместив данные на
http://graph.facebook.com/ALBUM_ID/albums
он возвращает идентификатор, который не является идентификатором альбома.
Я подтвердил это двумя способами
http://graph.facebook.com/{ALBUM_ID_I_RECIEVED}/photos
, но фотография никогда не публикуется для вновь созданного альбома, а публикуется в альбом приложений по умолчанию. Мне нужно знать реальный идентификатор альбома, чтобы я мог загружать изображения в новый альбом.
Новый php-sdk работает отлично, я только что протестировал его и вот мои комментарии:
1. Удостоверьтесь, что у вас есть правильное расширенное разрешение, которое publish_stream как для создания альбома, так и для загрузки фотографий .
2.После создания альбома с использованием приведенного ниже кода вы получите ID альбома:
$post_data = array( 'name'=>"My Test Album", 'description'=>"My Test Album Desc" ); $data['album'] = $this->facebook->api("/me/albums", 'post', $post_data);
PS: Я подтверждаю, что этот идентификатор не является идентификатором, который вы видите при просмотре Facebook.
3. Теперь нам нужно загрузить изображение с помощью идентификационного номера альбома «Reference»:
$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);
PS: Константа FCPATH
является константой Codeigniter, вы можете $_SERVER['DOCUMENT_ROOT']
или любым удобным вам способом.
И результат:
Я столкнулся с одной и той же проблемой, но с событиями. Что происходит, Facebook не возвращает фактический идентификатор события (в вашем случае, ID альбома), но вместо этого есть небольшое смещение (максимум 10). Итак, вот рабочий процесс, который вам нужно выполнить (чтобы он работал!):
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 } } }
Теперь ваша база данных обновила идентификаторы альбомов. Ура! Разработчик: 1. Facebook API: 0.
Я знаю, что это некрасиво. Я знаю, что с этим связано много потенциальных проблем. Но он выполняет свою работу до тех пор, пока Facebook не позаботится о том, чтобы исправить его API.