我可以动态更改og:description,og:title,og:author等吗?

时间:2015-12-15 17:36:33

标签: php facebook facebook-graph-api

我正在创建一个网站,其中附有Facebook的共享和类似按钮。 我想知道我是否可以使用PHP动态更改og:descriptionog:titleog:author等?

例如:

<meta property="og:url" content="<?php echo my_url(); ?>"/>
<meta property="og:type" content="website" />
<meta property="og:title" content="<?php echo $random_title; ?>"/>
<meta property="og:author" content="<?php echo $random_author; ?>"/>
<meta property="og:description" content="<?php echo $random_desc; ?>"/>

这些描述,标题,作者对于不同的帖子是不同的。我可以这样做吗? 或者还有其他方法吗?

我使用https://developers.facebook.com/tools/debug/

调试网址时出错
 Extraneous Property    Objects of this type do not allow properties named 'og:author'.
Parser Mismatched Metadata  The parser's result for this metadata did not match the input metadata. Likely, this was caused by the data being ordered in an unexpected way, multiple values being given for a property only expecting a single value, or property values for a given property being mismatched. Here are the input properties that were not seen in the parsed result: 'og:author'

2 个答案:

答案 0 :(得分:1)

,请确定。 Facebook只关心网络服务器通过HTTP提供的HTML代码(或更具体地说,OpenGraph标签),而不是 如何在服务器端生成它。

但是,您应该转义在OpenGraph标记内呈现的数据以防止Cross-Site Scripting攻击,例如使用PHP的htmlspecialchars函数:

<meta property="og:url" content="<?php echo htmlspecialchars(my_url()); ?>"/>
<meta property="og:type" content="website" />
<meta property="og:title" content="<?php echo htmlspecialchars($random_title); ?>"/>
<meta property="og:author" content="<?php echo htmlspecialchars($random_author); ?>"/>
<meta property="og:description" content="<?php echo htmlspecialchars($random_desc); ?>"/>

答案 1 :(得分:1)

是的,当然你可以使用动态标签,只要它们是在服务器上生成的。 Facebook不解析JavaScript。如果数据仍然存在,您可能需要在调试器中刷新它:https://developers.facebook.com/tools/debug/

Facebook会缓存Open Graph数据,请确保您不会定期更改特定网址的代码。否则,您必须始终刷新标签。因此,忘记在其他用户共享您的页面时选择随机文本。此外,如果一个URL很多次被喜欢,数据将被锁定,您无法再更改它。

以这种方式思考:用户喜欢特定的URL,他喜欢特定的文本和特定的Open Graph标签。现在,如果您要在整个时间内更改该特定URL的数据,对于之前使用其他数据喜欢它的用户来说,这不是很奇怪吗?只是旁注;)