我正在尝试发布一个开放的图表活动。实际上它正在使用静态.html文件。但如果我指向url params的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
错误:
“网站”类型的网址“http://www.domain.com/object/?og:type”上的对象无效,因为未提供“string”类型的必需属性“og:type”。“
如果你看一下这个错误,你会看到Facebook没有得到整个网址。没错了,对吧。请帮忙!
答案 0 :(得分:4)
您尝试使用的Open Graph对象网址是这个吗?
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中。它们实际上是通过open graph meta tags:<meta property="og:title" content="Some car" />
在网址指向的网页中编码的。因此,如果您尝试使用URL设置Object属性,它将无法工作。
不要忘记使用Lint Debug Tool来测试您的Open Graph对象网址!
你可能知道这一点,并且只是使用URL的GET参数来设置meta
标签。像这样的东西?
<meta property="og:title" content="<? echo $_GET['og:title'] ?>" />
如果是这种情况,请尝试不使用:
冒号。关于它们是否在URL中是否安全存在some debate,但如果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'] ?>" />
我没有对此进行过测试,只是给出了一些尝试。祝你好运!
答案 1 :(得分:0)
Facebook有这个很好的工具来找出Facebook看到的内容:https://developers.facebook.com/tools/debug只需输入网址,然后观看调试。
不要忘记,这些元标记必须放在部分中。
答案 2 :(得分:0)
知道了。 @thaddeusmt:已经走在正确的轨道上了。
它非常重要 - 当然它是 - 你必须encodeURIComponent(yoururl?with = vars)
<强>解决强>
如果你这样传递你的网址:
/ ME / somesandbox:开车= 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)