1

我正在尝试使用 RestFB 在我的 facebook 页面上发布帖子。

我的代码如下:

FacebookType publishResponse =  facebookClient.publish(pageId + "/feed", FacebookType.class,
                Parameter.with("message", message),
                Parameter.with("picture", picture), 
                Parameter.with("link", link), 
                Parameter.with("description", description));

我的参数具有以下值:

message: Test+test+test
picture: https%3A%2F%2Fcom-smallteaser-local-photo.s3.amazonaws.com%2Fskydivemag%25232fdefcfa-c7b2-4c0d-8504-9942ccd9a4b0%2523648%25230%25232592%25232592%2523292%2523292
link: http%3A%2F%2Flocalhost%3A9000%2Farticle%2F20130503-test-test-test
description: This+is+just+a+test

我得到了例外:

FacebookOAuthException:收到 OAuthException 类型的 Facebook 错误响应:(#100)图片 URL 格式不正确]

我在这里读到,我只需提供一个 URL 就可以添加图片,它特别指出它适用于“在 Amazon S3 或类似服务上托管图像的应用程序开发人员”。

知道我做错了什么吗?

4

2 回答 2

0

我遇到了这个问题,但只在较旧的 Android 设备上,而不是在桌面上。我可以在服务器日志中看到存在差异:

  • 桌面上访问 URL 时,Facebook请求图片 URL。
  • 较旧的 Android 设备上访问 URL 时,Facebook不会请求图片 URL。

事实证明,我正在使用window.location.origin构建绝对 URL,根据http://www.hyperink.com/blog/?p=18仅适用于 Webkit。正如帖子所暗示的那样,它是通过替换来解决的,

window.location.origin

经过

window.location.protocol + “//” + window.location.hostname
于 2013-09-21T10:59:04.133 回答
0

我认为这实际上不是图片 URL 的“格式”,而是它返回的内容:

https://com-smallteaser-local-photo.s3.amazonaws.com/skydivemag%232fdefcfa-c7b2-4c0d-8504-9942ccd9a4b0%23648%230%232592%232592%23292%23292

带有Content-Type: application/octet-stream响应头(如您在此处看到的) - 这可能会使 Facebook 的爬虫认为这不是真正的图像资源。

因此,您将必须弄清楚如何配置您的托管空间以提供正确的图像Content-Type,例如img/jpegimg/png

于 2013-05-04T21:44:00.983 回答