【发布时间】:2017-12-28 23:37:55
【问题描述】:
我们如何动态添加/更新元标签,以便它们被 Facebook/Whatsapp 共享对话框选中?
我将我的 Angular 2 应用程序升级到 Angular 4,以便在我们从 API 获取组件中的数据后使用 Meta 服务动态添加/更新元标记。
到目前为止,在我的组件中,我有
this.metaService.updateTag({ property: 'og:title', content: pageTitle });
this.metaService.updateTag({ property: 'og:url', 'www.domain.com/page' });
this.metaService.updateTag({ property: 'og:image', content: coverUrl, itemprop: 'image' });
this.metaService.updateTag({ property: 'og:image:url', content: coverUrl, itemprop: 'image' });
this.metaService.updateTag({ property: 'og:image:type', content: 'image/png' });
我正在使用 updateTag,因为我已经添加了具有默认值的静态标签。当我检查元标记值时,此代码成功更新了它们。
我知道 Facebook/Whatsapp 调试器工具不执行任何 javascript 是有道理的,因此它可能永远不会在他们的环境中执行。
我正在使用https://developers.facebook.com/tools/debug/,它总是选择有意义的默认标签值。
我的问题是,如何让 Facebook/Whatsapp 动态获取更新的标签值?我正在使用 Angular 4 并通过 API 调用加载所有数据,因此在页面加载和脚本执行之前无法获取任何类型的数据。
【问题讨论】:
-
“我的问题是,有什么方法可以让 Facebook/Whatsapp 动态获取更新的标签值?” - 不,没有。 Facebook 只关心从服务器请求时 URL 返回的数据。所以你需要某种预渲染——要么在你自己的应用中实现,要么通过一些外部服务,比如 prerender.io
-
我在下面添加了一个广泛的答案。只是重要的节点,facebook 缓存打开的图信息。希望我们都帮助您回答您的问题。考虑接受首选答案旁边带有 ✔ 的正确答案 ;-)
标签: angular facebook-graph-api facebook-opengraph meta-tags