【发布时间】:2017-01-19 14:00:59
【问题描述】:
我有一个静态站点,用户可以在其中生成无限组合的图像和内容。用户完成后,会生成永久链接,以允许他们通过 Facebook/Twitter/GooglePlus/等分享他们的创作。我希望他们共享的帖子包含用户的图像和内容,但我发现社交媒体机器人只从我的永久链接中解析 HTML 元标记,它们不评估任何 Javascript。
如何让我的用户的内容出现在共享的社交媒体帖子上?单击永久链接时,客户端 Javascript 将评估永久链接的查询参数并呈现用户的内容。我也可以在 HTML 元标记中呈现用户的内容,Twitter 和 FB 使用它来填充帖子的内容,但机器人不会评估任何 javascript,因此不会呈现元标记。
我探索过的一种可能的解决方案是预渲染。也许我的永久链接可以是一个 HTML 文件在 AWS S3 存储桶上的位置,一旦用户分享了他们的永久链接,我就可以创建它。 S3 上的那个 HTML 文件可以包含特定于用户的元标记,我可以将其提供给社交媒体机器人。当该文件被访问时,我可以让它重定向到我的永久链接。这看起来合理吗?我可以在尝试后报告。
另一种解决方案是使用预渲染服务,例如https://prerender.io/。它看起来有点笨重和黑盒,但它可能比我上面的 S3 解决方案更健壮和可靠。有什么想法吗?
我愿意接受反馈和其他解决方案,任何建议都会很棒。
其他相关信息:
这个答案似乎很有趣,其中涉及激活 Facebook Javascript SDK: https://stackoverflow.com/a/34178987/1884158
我知道 Twitter 的 Card Validator 和 Facebook 的 Share Debugger 等工具,这里: https://cards-dev.twitter.com/validator https://developers.facebook.com/tools/debug/ 这对于测试任何解决方案都很有用。
如果有帮助,我的网站是一个 React 应用程序,它捆绑在 HTML/CSS/JS 中并完全在客户端上呈现。
【问题讨论】:
-
你好,我面临着完全相同的问题。我有一个静态托管在 Vue 内置的 S3 上。它有需要在 facebook 和linkedin 上共享的工作。这些共享链接必须有职位名称、公司名称和公司徽标。我无法将这些数据注入元标记。你解决了这个问题吗?
-
@HaseebBurki 除了预渲染或迁移到服务器端渲染之外,我认为这是不可能的。我确实想出了一个黑客/解决方法,如下所述,但它有其缺点。
标签: javascript html meta-tags prerender socialshare