Facebook 不会在墙贴上呈现链接图片

Posted

技术标签:

【中文标题】Facebook 不会在墙贴上呈现链接图片【英文标题】:Facebook won't render link image on wall post 【发布时间】:2012-12-27 17:47:40 【问题描述】:

Facebook 需要一种在墙贴中呈现图像的方法。有时,您只需复制并粘贴图片的链接即可,例如:

但是,我需要链接到 S3 上的图像,我得到了这个:

您可以点击here 来验证第二个链接实际上是一个有效的图片地址(您应该会看到一个令人毛骨悚然的手绘笑脸)。

我只使用网站上的普通 Facebook GUI 进行了此测试,但我将在我的应用程序中使用此问题的答案,该应用程序通过 Open Graph API 与 Facebook 集成。 (以防有人认为这个问题与编程无关)。

有人知道我需要做什么才能在帖子中渲染第二张图片吗?

【问题讨论】:

【参考方案1】:

关键是图像大小。不要问我神奇的数字是什么,但较大的图像有效,而较小的则无效。可能是它必须大于 facebook 使用的预览大小。

在我的测试中,我关闭了静态网站配置。

【讨论】:

【参考方案2】:

我的猜测是只有 静态链接会为 facebook 上的帖子生成缩略图。您尝试使用的链接不是静态链接。

这是 Facebook 在尝试生成缩略图时得到的结果。

<Error>
<SCRIPT/>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>D577337ADC9FA36A</RequestId>
<HostId>
DN9BnBduVLgHbf2lONA+e/fXQIOuT7W3WOFUPdthdpP2MZQhSLlolTvyJ0t9eZXn
</HostId>
</Error>

解决方案:

事实证明,要使其正常工作,您不能将任意子域映射到任意存储桶。完全限定子域名必须与 S3 存储桶名称相同。

    假设您的站点名称是 static.mydomain.com。那你需要 创建一个具有相同名称的 S3 存储桶,命名为 static.mydomain.com。

    将存储桶配置为 S3 静态网站后,它将具有 分配给它的 URL,类似于 http://static.mydomain.com.s3-website-us-east-1.amazonaws.com

    转到您的域名托管服务商并将您的子域映射到步骤 2 中的 URL。在 enom.com 中,这意味着将主机“静态”映射到地址“static.mydomain.com.s3-website-us-east-1.amazonaws.com”作为CNAME 记录。

Source,它将帮助您从您的 S3 帐户托管一个静态站点。使用来自该自定义域 URL 路径的图像。这会起作用的。

【讨论】:

您的很多说明以及源代码中的说明似乎都是关于将某个域名映射到 Amazon S3 存储桶。我不需要这样做——我不在乎 url 最终的样子。鉴于我不在乎图片网址是什么,我需要做什么?是否会将我的存储桶配置为 Amazon 托管静态网站,并使用基于其端点的 url,使我的 url 成为“静态”? 更新——我将我的 S3 存储桶配置为托管静态网站并获得了与以前相同的结果——即使使用基于 dotellapptest.s3-website-us-east-1 的新链接也是如此。 amazonaws.com

以上是关于Facebook 不会在墙贴上呈现链接图片的主要内容,如果未能解决你的问题,请参考以下文章

手动获取文本到墙贴文本区域(使用 FB API 在 facebook 上共享 - Android)

如何在我的网站上呈现 facebook 图片链接?

Android Facebook 墙贴 - publish_action 权限未授权

在 ios xcode 4.3(故事板)中弹出 facebook feed 对话框(用于墙贴)

确定用户何时创建 Facebook 帐户

Facebook 发布链接图片