J2ME Facebook Graph API - 在用户墙上发布图片

3

我想从设备上发布图片到用户的Facebook页面。我找到了这篇文章:http://codenameone.blogspot.com/2011/09/lwuit-and-facebook-api-by-chen-fishbein_18.html,但它不支持发布图片,所以我写了一个简单的方法如下:

 public void postOnWallWithPhoto(String userId, String message, byte[] img) throws IOException {
    checkAuthentication();
    FacebookRESTService con = new FacebookRESTService(token, userId, FEED, true);
    con.setContentType("image/jpeg");
    con.addArgument("message", message);
    con.addArgument("type", "photo");
    con.addArgument("picture", img);
    if (slider != null) {
        SliderBridge.bindProgress(con, slider);
    }
    for (int i = 0; i < responseCodeListeners.size(); i++) {
        con.addResponseCodeListener((ActionListener) elementAt(i));
    }
    current = con;
    NetworkManager.getInstance().addToQueueAndWait(con);
}

这个方法是这样调用的:

FileConnection fc = (FileConnection) Connector.open(path);
InputStream is = fc.openInputStream();
byte[] b = new byte[(int) fc.fileSize()];
is.read(b);
FaceBookAccess.getInstance().postOnWallWithPhoto(me.getId(), "test2", b);

在我发送请求后,墙上只出现文字(在这个例子中是test2)。应该放置图片的地方显示了一条消息:“无效的无效”。有没有人知道我做错了什么?或者有人能分享一个帮助我在Facebook墙上发布图片的代码吗?

还有另一个 Java ME 的 Facebook API,网址是 http://kenai.com/projects/facebookapime/pages/Home。你能试试吗? - Telmo Pimentel Mota
是的,我也尝试过这个。它不支持在墙上发布图片。 - Marcin
2个回答

1
众所周知,J2ME没有提供任何API来支持Facebook,但我们仍然可以通过一种方式在Facebook上发布图片,我已经做到了。以下是我分享的一份简要程序,介绍如何使用J2ME将图片发布到Facebook墙上。
  1. 从Facebook获取ACCESS TOKEN:您可以使用PHP或任何第三方API来完成此操作(在我的情况下,我使用了app42(shephertz)云服务)

  2. 一旦您获得了ACCESS TOKEN,请使用该token获取要在其上发布图像的Facebook用户ID。

  3. 一旦您拥有了userId,唯一需要做的就是使用“MultiPart请求”将图像上传到Facebook。以下是我的代码中的一些重要语句(我没有分享整个代码,因为我使用了第三方API(app42)来获取访问令牌和用户ID)。

Facebook的URL:

String url = "https://graph.facebook.com/" + user_id + "/photos?access_token=" + accessToken;

将图像存储在字节数组中:byte fileBytes[];

多部分请求中使用的哈希表(您可以按原样复制):

Hashtable params = new Hashtable();
params.put("custom_param", "param1");
params.put("custom_param2", "param2");

一个发送我的多部分请求的类。
HttpMultipartRequest req = new HttpMultipartRequest(url, params, "upload_field", "original_filename.png", "image/png", fileBytes);

您可以使用以下链接来参考多部分请求http://www.developer.nokia.com/Community/Wiki/HTTP_Post_multipart_file_upload_in_Java_ME

一旦完成,希望您已成功在Facebook墙上发布了一张图片。

编程愉快。


1

由于Facebook对其登录流程进行了更改,旧版LWUIT Facebook登录已无法正常工作。

这仅适用于Codename One,它还支持在当前Facebook演示中发布图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接