Я использую Facebook Android SDK.
Создать несколько постов в ленте новостей зарегистрированного в Facebook пользователя, которые будут содержать фото с Android-устройства (его SD-карты) и какой-нибудь комментарий. Результат должен быть таким же, как при использовании функции добавления фото/видео непосредственно в Facebook. В итоге все должно выглядеть примерно так:
Я не могу это сделать.
Я просмотрел множество аналогичных постов на Stack Overflow, но ответа там пока нет.
Загружаю фотографии с мобильного телефона (его SD-карты) в альбом, который создается для моего приложения при первой загрузке фотографии с него. В этом случае при построении объекта params я использую ключ picture
и в качестве его значения помещаю байт картинки. Я использую me/photos
в request(...)
вызове объекта Facebook (или AsyncFacebookRunner). **
Не все загруженные изображения отображаются на моей стене. Вместо этого появляется что-то вроде x фотографий были добавлены в альбом xxx.
Bundle params = new Bundle();
params.putString("message", "Uploaded on " + now());
params.putByteArray("picture", bytes); //bytes contains photo bytes, no problem here
asyncRunner.request("me/photos", params, "POST", new PostPhotoRequestListener(), null);
Отображать фотографии, хранящиеся где-то в Интернете, в постах на моей стене. В этом случае при построении объекта params я использую ключ link
и задаю в качестве его значения url картинки. Я использую me/feed
в вызове request(...)
.
Это приводит к странному результату, но это не то, что я хочу.
Bundle params = new Bundle();
params.putString("message", "Uploaded on " + now());
params.putString("link", "http://i1114.photobucket.com/albums/k538/tom_rada/bota2.jpg");
asyncRunner.request("me/feed", params, "POST", new PostPhotoRequestListener(), null);
Я пытаюсь использовать ключ picture
и установить photo bytes в качестве значения (как в 1.), и вызвать запрос с me/feed
(как в 2.),
Сообщение создается, как я хотел бы, но фото не включено
Bundle params = new Bundle();
params.putString("message", "Uploaded on " + now());
params.putByteArray("picture", bytes); //bytes contains photo bytes, no problem here
asyncRunner.request("me/feed", params, "POST", new PostPhotoRequestListener(), null);
Похоже, что единственный способ создать новые посты с фотографиями на стене пользователя - это добавить фотографии и соответствующие комментарии в альбом Wall photos пользователя.
Осторожно: Вызов facebook.request
должен быть заменен на асинхронный вызов, чтобы операция не блокировала поток UI !!!
String wallAlbumID = null;
String response = facebook.request("me/albums");
JSONObject json = Util.parseJson(response);
JSONArray albums = json.getJSONArray("data");
for (int i =0; i < albums.length(); i++) {
JSONObject album = albums.getJSONObject(i);
if (album.getString("type").equalsIgnoreCase("wall")) {
wallAlbumID = album.getString("id");
Log.d("JSON", wallAlbumID);
break;
}
}
... и затем
if (wallAlbumID != null) {
Bundle params = new Bundle();
params.putString("message", "Uploaded on " + now());
params.putByteArray("source", bytes);
asyncRunner.request(wallAlbumID+"/photos", params, "POST", new PostPhotoRequestListener(), null);
}