动态 OpenGraph 对象 URL 不起作用

Posted

技术标签:

【中文标题】动态 OpenGraph 对象 URL 不起作用【英文标题】:Dynamic OpenGraph Object URL not working 【发布时间】:2012-02-26 20:15:12 【问题描述】:

我正在尝试发布一个开放的图表活动。实际上它正在使用静态 .html 文件。但是,如果我用 url 参数指向一个 url,我会得到一个错误。两个页面上的源代码是 100% 相同的,相信我。

# Dynamic call
/me/somesandbox:drive?car=http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car

# Static call
/me/somesandbox:drive?car=http://www.domain.com/static_car.html

错误:“'website' 类型的 URL 'http://www.domain.com/object/?og:type' 处的对象无效,因为没有 'string' 类型的必需属性 'og:type'提供。”

如果您查看错误,您会发现 Facebook 没有获得完整的 url。参数丢失,对。请帮忙!

【问题讨论】:

尝试用转义引号将标签 values 括起来。 不,这是一个网址。在浏览器和 Facbebook URL Linter 中工作 但显然您没有在浏览器或 linter 中使用它。您是否考虑过您正在编码的语言可能有逃避的考虑? 对不起,代码不是一种语言。只是一个例子。 您使用什么语言?将有助于将其添加到标签中... 【参考方案1】:

知道了。 @thaddeusmt:已经在正确的轨道上。

它非常重要——当然是——你必须编码URIComponent(yoururl?with=vars)

已解决

如果你像这样传递你的网址:

/me/somesandbox:drive?car=http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car

确保对 object-url 进行编码。例如。使用javascript

encodeURIComponent(http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car)

【讨论】:

【参考方案2】:

Facebook 有这个很好的工具来找出 Facebook 看到的内容:https://developers.facebook.com/tools/debug 只需输入 url,然后观看调试。

别忘了,这些元标记必须放在部分中。

【讨论】:

【参考方案3】:

您尝试使用的 Open Graph 对象 url 是这个吗?

http://www.domain.com/object/?og:type=somesandbox:car&og:title=Some%20car

我的猜测是,由于 Facebook 已经在为 action names(即 graph.facebook.com/me/recipebox:cook?recipe=)解析 : 冒号字符,因此将它们用作您自己的参数可能不安全。

另外,可能会有一些混淆:据我所知,对象的 Open Graph 属性不会在像 og:title=Some%20car 这样的 URL 中传递。它们实际上在 URL 指向的页面中未编码,通过 open graph meta tags:<meta property="og:title" content="Some car" />。因此,如果您尝试使用 URL 设置 Object 属性,它将无法正常工作。

不要忘记使用 Lint Debug Tool 来测试您的开放图对象 URL!

不过,您可能确实知道这一点,并且只是使用 URL 的 GET 参数来设置 meta 标记。像这样?

<meta property="og:title" content="<? echo $_GET['og:title'] ?>" />

如果是这种情况,请尝试不使用 : 冒号。 some debate 关于它们在 URL 中是否安全,但如果 Facebook 也在解析它们,那么将它们排除在外是最安全的,如下所示:

// http://www.domain.com/object/?ogtype=somesandbox:car&ogtitle=Some%20car
<meta property="og:type" content="<? echo $_GET['ogtype'] ?>" />
<meta property="og:title" content="<? echo $_GET['ogtitle'] ?>" />

我没有测试过这个,只是给出一些尝试的建议。祝你好运!

【讨论】:

让我尝试不使用 :

以上是关于动态 OpenGraph 对象 URL 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当绑定项为对象并动态修改时,单向绑定不起作用

通过开放图向 Facebook 提交对象不起作用,但在 Facebook 的对象调试器中测试 URL 后可以工作?

spring security3 动态从数据库中读取权限信息<sec:authorize>标签 url属性不起作用

textContent 对象属性不起作用

JQuery 自动完成对第一个按键事件不起作用(源是一个数组)

动态 TabView primefaces,选项卡渲染属性不起作用