Загрузить изображения в определенный альбом Facebook - PullRequest
5 голосов
/ 22 декабря 2010

Я могу создать альбом с помощью API Graph Facebook, разместив данные на

http://graph.facebook.com/ALBUM_ID/albums

возвращает идентификатор, который не является идентификатором альбома.

Я подтвердил это двумя способами

  1. переходя на этот альбом, помощь отличается от того, что я получил
  2. и путем публикации http://graph.facebook.com/{ALBUM_ID_I_RECIEVED}/photos, но фотография никогда не публикуется во вновь созданном альбоме, а публикуется в альбоме приложений по умолчанию.

Мне нужно знать настоящий идентификатор альбома, чтобы я мог загружать изображения во вновь созданный альбом.

Ответы [ 2 ]

9 голосов
/ 27 декабря 2010

Новый php-sdk работает просто отлично, я только что проверил его и вот мои комментарии:

1. Убедитесь, что у вас есть правильное расширенное разрешение, которое publish_stream для создания Album и Photo upload.

2.После создания Альбома с использованием приведенного ниже кода вы получите Идентификатор альбома:

$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. Теперь нам нужно загрузить изображение с «эталонным» идентификатором альбома, который вы получили:

$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'] или любой другой метод, который вам удобен.

И результат:
alt text

2 голосов
/ 24 декабря 2010

Я действительно столкнулся с точно такой же проблемой, но с событиями.Что происходит, Facebook не возвращает фактический идентификатор события (в вашем случае, идентификатор альбома), но вместо этого есть небольшое смещение (максимум 10).Итак, вот рабочий процесс, которому вы должны следовать (чтобы заставить его работать!):

  1. Опубликовать альбом.Сохраните возвращенный (поддельный) идентификатор альбома, fb_aid в вашей базе данных.
  2. Запрос всех опубликованных альбомов текущего пользователя, вошедшего в FB.
  3. Выполните цикл по списку возвращенных альбомов..
  4. Определите фактический идентификатор альбома следующим образом, проверив, смещено ли <10. </li>
  5. Сохраните фактический идентификатор альбома в базе данных.

$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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...