使用 RestFB 标记(和上传)照片

Tagging (and uploading) a photo using RestFB

以下代码使用 RestFB 将标记的照片上传到 Facebook:

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}]")
);

效果很好。但是,我觉得倒数第二行有龙,我想用一个变量tags替换"[{\"tag_uid\":\"myID\", \"x\" : 0.0, \"y\" : 0.0}]",定义如下:

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 错误吗?还是我做错了什么?

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 文档中明确说明。