【问题标题】:How to post an image to a Facebook wall using Grails如何使用 Grails 将图像发布到 Facebook 墙上
【发布时间】:2012-11-12 12:16:24
【问题描述】:

我正在使用 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,我如何将这张图片发布到特定的用户相册?如何创建新专辑?

【问题讨论】:

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


    【解决方案1】:

    我没有使用 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)
    

    【讨论】:

    • 我有一个图像的网址,例如:mydomain.com/234234 如果我在浏览器中输入它,它会显示图像。但是如何将其转换为文件,以便 publish() 方法接受它?
    • 我更新了我的答案。同样,请记住我没有使用 fb-sdk,这是未经测试的代码。
    • 这并不能真正解决我的问题。我想知道如何将图像发布到用户的 facebook 墙和 Grails 中的用户相册?
    • 要发布到墙上,你只需要发布到/userid/photos——要上传到特定的相册,你必须先获取相册ID,然后发布到albumid/photos;但是前者只需要publish_stream 权限,后者需要user_photos。如果您不想进行文件上传,您还可以通过使用参数名称url 为图像提供(可公开访问的)HTTP URL 来上传照片。顺便说一句,这些都在文档中,developers.facebook.com/docs/reference/api/photo
    • @confile,我正在尝试发布消息。您能否发布您的配置和 BuildConfig 文件以及控制器和视图。对贪婪的要求感到抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2011-06-21
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多