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 来检索。

知道图片的 url,我如何将这张图片发布到特定的用户相册?如何创建新专辑?

4

1 回答 1

0

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

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

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

更新:

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

    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)
于 2012-11-12T13:22:33.277 回答