发布到时间轴没有正确拼写

时间:2012-02-19 23:59:57

标签: php facebook facebook-graph-api facebook-php-sdk

我使用PHP SDK使用facebook :: api方法发布到登录用户时间轴。我很确定我过去工作过,但现在它似乎失败并返回以下错误:

  

OAuthException:(#3502)URL http://example.com/处的对象具有og:type   '网站'。属性“event”需要一个og:type对象   '例如:事件'

我已将网址放入Facebook调试工具中,并且返回正常。我也使用Graph API资源管理器来测试POST请求,这是有效的。唯一没有的地方是我的PHP脚本。

我知道我并不是唯一一个遇到这种情况的人,但似乎其他人都在使用Javascript SDK,因此解决方案与我无关。

我也尝试在我的请求中设置scrape=true,但这没有任何区别。

我使用的代码是:

try{
    // Post the reply to the Facebook users wall
    $this->facebook_get_attendance['action_id'] = $this->facebook->api(
        "/me/example:reply?event=".urlencode("http://www.example.com/facebook-event/$this->area_rel/$this->facebook_event_reply_id")."&scrape=true&access_token={$this->facebook_user_details['access_token']}",
        "POST"
    );
    $this->facebook_get_attendance['action_id'] = $this->facebook_get_attendance['action_id']['id'];
}catch(FacebookApiException $e){
    error_log($e);
    $this->facebook_get_attendance['action_id'] = NULL;
}

为什么会发生这种情况?

正在传递的网址是:

/me/example:reply?event=http%3A%2F%2Fwww.example.com%2Ffacebook-event%2Fbath%2F612&access_token=ACCESS_TOKEN

2 个答案:

答案 0 :(得分:3)

基于以往经验的最可能的解释:

  • 您在事件页面上有一个og:url标记,可以将facebook重定向到其他没有该事件的OG标记的地方
  • 您的网站向抓取工具返回的内容与向常规用户返回的内容不同(例如,如果网站需要登录) - 请通过手动请求进行调试:curl -i -H 'Accept: */*' -H 'Range: bytes=0-40960' -H 'Connection: close' -A 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)' $URL_GOES_HERE

答案 1 :(得分:0)

我已将此报告为Facebook的一个错误,目前处于“分类”阶段。如果我有任何更新,我会在这里发布。