动态 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属性不起作用