动态OpenGraph对象URL无效

时间:2012-02-04 14:59:03

标签: facebook url facebook-graph-api parameters request

我正在尝试发布一个开放的图表活动。实际上它正在使用静态.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没有得到整个网址。没错了,对吧。请帮忙!

3 个答案:

答案 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)