使用restFb将带有图片的帖子发布到facebook页面

时间:2014-09-29 16:19:43

标签: java facebook image publish restfb

当我通过

将照片发布到我的墙上时
FacebookType publish = fc.publish("me/photos", FacebookType.class,
                      BinaryAttachment.with(attachmentName, temporaryStream),
                      Parameter.with("message", "my myssage"));

按预期创建帖子。我可以在消息下看到一条消息和已发布的图片。

但是当我想要做同样的事情但在某些页面墙上而不是用户墙时。

FacebookType publish = fc.publish(pageId + "/photos", FacebookType.class,
                      BinaryAttachment.with(attachmentName, temporaryStream),
                      Parameter.with("message", "my myssage"));

帖子已发布,但我只能看到文字。不是图片。只有当我点击帖子的日期时才能看到图片。我也可以点击页面顶部的照片,然后点击页面名称"照片标签。

当我将照片发布到网页上时,有什么方法可以将照片视为帖子的一部分吗?

2 个答案:

答案 0 :(得分:4)

你的答案是一种享受,并帮助了我无数的金额,但我发现我的解决方案我不需要

FacebookType post =  fc.publish(pageid + "/feed", FacebookType.class,
        Parameter.with("message", "your message"),Parameter.with("type", "photo"),
        Parameter.with("link", photoLink.getLink()));

因为我会回复一个错误(我应该复制给你看)但photoLink.getLink()在我的情况下返回null。

所以我更新的解决方案最终成为了

        FacebookType photo = client.publish(groupId + "/photos",
            FacebookType.class,
            BinaryAttachment.with(imageName), 
                    imageAsBytes, 
                    "image/png"), 
            Parameter.with("message", 
                    message));

只需2美分,再次感谢您的帮助!

修改

同时在玩游戏的时候,我注意到在解决方案中,我到达的时候我正在创建一个FacebookType photo对象,并且这个对象不会在任何地方被使用,你只是调用了进一步创建的客户端的发布方法你的计划。

我的最后一堂课是在下面,(我的申请是从电脑上拍摄一张照片,然后摆成一组墙)

    public void createImagePostInGroup(String message, String groupId, String imageFilePath){

    byte[] imageAsBytes = fetchBytesFromImage(imageFilePath);

    DefaultFacebookClient client =
        new DefaultFacebookClient(accessToken, Version.LATEST);

    client.publish(groupId + "/photos",
            FacebookType.class,
            BinaryAttachment.with(imageFilePath.substring(imageFilePath.length()-34), 
                    imageAsBytes, 
                    "image/png"), 
            Parameter.with("message", 
                    message));
}

我的图像在此方法中转换为字节数组

private byte[] fetchBytesFromImage(String imageFile) {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte fileContent[] = null;

    try{

        BufferedImage image = ImageIO.read(new File(imageFile));

        ImageIO.write(image, "png", baos);
        baos.flush();
        fileContent = baos.toByteArray();

    }catch (Exception e){
        e.printStackTrace();
    }
    return  fileContent;

}

再次感谢您的帮助。

答案 1 :(得分:3)

我终于找到了解决方案。要将带有照片的帖子发布到正常"仅文本的部分"您需要将照片发布到墙上(您的用户墙而不是页面墙),然后获取其链接,最后使用图片链接创建页面的源。

这是示例代码:

FacebookType photo = fc.publish(pageid + "/photos" , FacebookType.class,
            BinaryAttachment.with(photoName, photoInputStream));
Link photoLink = fc.fetchObject(photo.getId(), Link.class);
FacebookType post =  fc.publish(pageid + "/feed", FacebookType.class,
            Parameter.with("message", "your message"),Parameter.with("type", "photo"),
            Parameter.with("link", photoLink.getLink()));
编辑:我忘记了一件事。当您稍后删除帖子时,您不会删除照片。要做到这一点,你必须手动完成。