Отправка изображения в альбом Facebook с помощью API AS3 - PullRequest
4 голосов
/ 07 июля 2011

У меня проблемы с отправкой изображения из приложения на холсте в альбомы пользователя. Согласно документам Facebook:

Чтобы опубликовать фотографию в альбом пользователя, у вас должно быть разрешение publish_stream. Получив это, вы можете загрузить фотографию, отправив запрос HTTP POST с содержимым фотографии и необязательным описанием для одного из этих подключений к Graph API:

  1. https://graph.facebook.com/USER_ID/photos - фотография будет опубликована в альбом, созданный для вашего приложения. Мы автоматически создаем альбом для вашего приложения, если он еще не существует. Все загруженные таким образом фотографии будут добавлены в этот же альбом.
  2. https://graph.facebook.com/ALBUM_ID/photos - фотография будет опубликована в конкретный существующий фотоальбом, представленный ALBUM_ID.

Итак, если перейти к первому пункту, если я загружу изображение вроде этого ...

Facebook.api("me/photos",imagePostCallback,{message:"",image:myImageBitmap,fileName:''},URLRequestMethod.POST);

... тогда я могу ожидать, что это поместит мое изображение в альбом, названный для моего приложения, которое оно создаст при необходимости?

Не так .

Что действительно происходит, когда альбом не существует, так это то, что загруженное изображение помещается в любые другие удобные альбомы, которые существуют, как правило, для (и создаются) другими приложениями. Это немного больно.

Пока что я пробовал следующее:

  1. Отключение режима песочницы. Я думал, что приложение может быть не в состоянии создавать новые альбомы, потому что оно было в режиме «песочницы», однако отключение режима «песочницы» не имело никакого значения, и я могу создавать альбомы напрямую с его включением.
  2. Проверка существования моего альбома и создание его при необходимости. Я могу проверить свой альбом и создать его, если он не существует, но я не могу затем загрузить изображение, потому что вызов POST для Facebook.api для загрузки изображения не будет выполнен, если он не вызывается как прямой результат взаимодействия с пользователем.

И теперь я немного озадачен. Очевидно, что у меня не может быть возможности публиковать изображения в альбоме конкурентов, но в настоящий момент единственная альтернатива, которую я вижу, состоит в том, чтобы заставить пользователя дважды подать свое изображение, если необходимо создать альбом. Есть идеи?

1 Ответ

3 голосов
/ 07 июля 2011

Я предполагаю, что вам нужен access_token в ваших параметрах :) Когда вы публикуете что-то на Facebook пользователя, вам всегда нужно это (не всегда необходимо при получении информации). Способ получения маркера доступа показан ниже:)

public function post():void
{
    var _params:Object = new Object();

    _params.access_token = Facebook.getSession().accessToken;
    _params.message = "";
    _params.image = myImageBitmap;
    _params.fileName = "";

    Facebook.api("me/photos", imagePostCallback, _params, URLRequestMethod.POST);
}

также убедитесь, что у вас есть необходимые разрешения при запросе разрешений в вашем приложении.

EDIT

Хорошо, поэтому я немного пропустил ваше редактирование;) Должна быть возможность создать свой собственный альбом. Взгляните на этот php-код для графа API. Код также должен быть в состоянии проанализировать в AS3.

http://developers.facebook.com/blog/post/498/

EDIT2

хорошо, я сделал еще несколько копаний (казалось, интересно знать). Это на самом деле должно работать при использовании графа API.

FB.api('/me/albums', albumCreateCallback, {name: 'name of the album', message: 'description of the album'}, URLRequestMethod.POST);

Когда вы затем вызываете другой вызов API для загрузки вашего изображения в albumCreateCallback, оно должно работать и загружать ваше изображение (в соответствии с тем, что я нашел).

...