如何使用Grails将图像发布到Facebook墙上

时间:2012-11-12 12:16:24

标签: facebook facebook-graph-api grails grails-plugin grails-2.0

我使用grails facebook-sdk插件连接并发布到Facebook。

要将消息发布到用户的墙上,我使用:

def publishMessageResponse = facebookClient.publish("me/feed", [message:"RestFB test"])

这很好用,但我想将图片发布到用户的特定相册。文档说它应该与:

一起使用
def publishPhotoResponse = facebookClient.publishFile("me/photos", [message, "Test cat"], "/cat.png")

但我总是得到“找不到文件”错误。我拥有的图像存储在数据库中,可以通过获取图像的URL来检索。

了解图片的网址,如何将此图片发布到特定的用户相册?如何创建新专辑?

1 个答案:

答案 0 :(得分:0)

我没有使用facebook-sdk,但我认为问题是找不到相对于项目位置的文件'/cat.png'。您需要提供有效且可访问的文件路径。

您可以通过在publishFile之前执行类似的操作来确认...

assert new File("/cat.png").exists(), "File does not exist!"

更新:

以下是将网址转换为文件的示例。 如果除了使用实际文件之外还有其他选项,这可能不是理想的解决方案

    def someUrl = "http://www.google.com/images/logo.gif";
    def file = File.createTempFile("facebookUpload",".temp").withOutputStream { out ->
        out << new URL(someUrl).openStream()
    }

    file.deleteOnExit();
    def publishPhotoResponse = facebookClient.publishFile("me/photos", [message, "Test cat"], file)