2015-11-13 2 views
0

Следующий код загружает помеченную фотографию в Facebook с RestFB:Tagging (и загрузки) фото с помощью RestFB

URL url = new URL("http://...."); 
facebookClient.publish(
    "me/photos", 
    Photo.class, 
    BinaryAttachment.with("file.jpg", url.openStream()), 
    Parameter.with("tags", "[{\"tag_uid\":\"myID\", \"x\" : 0.0, \"y\" : 0.0}]") 
); 

Он отлично работает. Тем не менее, я чувствую там драконы в предпоследней строке, и я хотел бы заменить "[{\"tag_uid\":\"myID\", \"x\" : 0.0, \"y\" : 0.0}]" с переменной tags определяется следующим образом:

Photo.Tag tag = new Photo.Tag(); 
tag.setId("myID"); 
tag.setX(0.0); 
tag.setY(0.0); 

List<Photo.Tag> tags = new ArrayList<Photo.Tag>(); 
tags.add(tag); 

Но это не работает. Возможно потому, что android.util.Log.d("", tag.toString()) производит Tag[... id=myID ...], , а не Tag[... id=myID ...], то есть, RestFB использует id, а не tag_uid, как представляется, требуется. Это ошибка RestFB? Или я делаю что-то неправильно?

ответ

1

Тип Photo.Tag используется для получения информации от Facebook, не отправляющей ее на Facebook. Вы должны создать свой собственный тип:

public class MyPhotoTag { 
     @Facebook("tag_uid") 
     private String tagUid; 

     @Facebook 
     private Double x; 

     @Facebook 
     private Double y; 

     // add getter and setter here 
} 

Ваш код должен работать с этим новым типом.

Это не ошибка RestFB, но должна быть разъяснена в документации RestFB.

+0

Я согласен с тем, что * Тип 'Photo.Tag' используется для получения информации от Facebook, *, но это не обязательно означает, что' Photo.Tag' не предназначен для отправки информации в Facebook. Поскольку полученные данные должны быть такими же, как отправленные данные. В частности, когда я получаю тег из Facebook, я ожидаю, что он будет иметь тип 'MyPhotoTag', а не' Photo.Tag'. Может, я что-то упустил? – user2768

+1

Json, полученный от Facebook, отличается от Json, который вы должны отправить в Facebook. Таким образом, они не одни и те же объекты, они очень похожи. Сам объект не может знать, используется ли 'id' или' tag_uid', мы должны предоставить некоторые утилиты, но atm это самый простой способ решить текущую ситуацию. – Norbert

Смежные вопросы