我正在尝试发布一个开放图谱事件。实际上,它使用的是静态 .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
错误:
“URL ‘http://www.domain.com/object/?og:type’处类型为‘网站’的对象无效,因为未提供类型为‘字符串’的必需属性‘og:type’。”
如果您查看错误,您会发现 Facebook 没有获得完整的 url。缺少参数,对吧。请帮忙!
最佳答案
您尝试使用的 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=
),将它们用作您自己的参数可能不安全。
此外,可能会有一些混淆:据我所知,对象的开放图谱属性不会在这样的 URL 中传递 og:title=Some%20car
.它们实际上在 URL 指向的页面中未编码,通过 open graph meta tags : <meta property="og:title" content="Some car" />
.因此,如果您尝试使用 URL 设置对象属性,它将不起作用。
不要忘记使用 Lint Debug Tool测试您的 Open Graph 对象 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'] ?>" />
我没有测试过这个,只是给出一些尝试的建议。祝你好运!
关于facebook - 动态 OpenGraph 对象 URL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141746/