Php 过帐到时间线未正确抓取

Php 过帐到时间线未正确抓取,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,我使用PHPSDK使用facebook::api方法发布到登录用户的时间线。我很确定我以前使用过它,但现在它似乎失败并返回以下错误: URL处的OAutheException:(#3502)对象具有og:type “网站”的名称。属性“event”需要og:type的对象 “示例:事件” 我已将URL放入Facebook调试器工具,并且返回良好。我还使用了GraphAPI浏览器来测试POST请求,这很有效。唯一没有的地方是我的PHP脚本 我知道我不是唯一一个遇到这种情况的人,但似乎其他人都在使用

我使用PHPSDK使用facebook::api方法发布到登录用户的时间线。我很确定我以前使用过它,但现在它似乎失败并返回以下错误:

URL处的OAutheException:(#3502)对象具有og:type “网站”的名称。属性“event”需要og:type的对象 “示例:事件”

我已将URL放入Facebook调试器工具,并且返回良好。我还使用了GraphAPI浏览器来测试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;
}
知道为什么会这样吗

正在传递的URL是:

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

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

  • 在事件页面上有一个og:url标记,它将facebook重定向到其他没有事件og标记的地方
  • 您的站点向爬虫程序返回的内容与向普通用户返回的内容不同(例如,如果站点需要登录)-使用手动请求进行调试:
    curl-i-H'Accept://*'-H'范围:bytes=0-40960'-H'连接:close'-a'facebookexternalhit/1.1(+http://www.facebook.com/externalhit_uatext.php)“$URL”在这里出现

我报告说这是Facebook的一个bug,目前它正处于“筛选”阶段。如果我有任何更新,我会在这里发布。

你如何使用
$this->Facebook->api将回复发布到Facebook用户墙("/me/example:reply
?请检查清楚您不熟悉PHP对象,代码没有问题!该链接是专门针对Javascript SDK的。这是PHP!我已经得出结论,这实际上是一个bug,因为我已经通过PHP SDK尽可能多地调试了它,但我仍然无法让它工作。Facebook也承认这可能是一个bug,并正在研究它,希望不会花太长时间,因为这显然是一个非常可怕的问题!看看这个,它可能会帮助你…urlencode(“)是否可以使用对象调用[$this->facebook\u event\u reply\u id]直接用双引号括起来?我从来没有得到它的替代值,我用它来表示。@SamArulRaj,我见过这个问题,它与这个问题无关,因为它涉及javascript SDK。非常感谢您的回答,我现在将尝试这个调试测试。页面上的og:url是页面的url!因此它不会将其重定向到dif不同的地址。这是否意味着为了修复它,我必须删除og:url meta标记?Facebook在删除你的url时收到的输出是相同的-我通常会删除其中没有“meta”的行-这可以检查Facebook是否真的检测到你认为它是什么。我假设og:type标记实际上没有设置为类似网站的错误消息说,顺便问一下,我怎么才能去掉除meta标记之外的所有内容,因为目前我无法向上滚动到足以看到整个页面。是的,og:type设置为“example:event”,其中example是我的应用程序。奇怪的是,如果我在服务器上使用curl调用url,它就可以工作。唯一不起作用的地方是在PHP Facebook SDK。我ahev对此进行了调试,但到目前为止还没有找到导致此问题的原因。根据这一点,它看到的网页非常好。在不了解网站和应用程序的情况下,所有标记都已更正。此时,我想不出什么其他问题-您在调试工具中看到的错误可能不正确:/