【问题标题】:Posting to timeline not scraping correctly发布到时间线未正确抓取
【发布时间】:2012-02-19 23:59:57
【问题描述】:

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

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

我已将 URL 放入 Facebook 调试器工具中,并且返回正常。我还使用了 Graph API explorer 来测试 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

【问题讨论】:

  • 你用$this->facebook->api("/me/example:reply将回复发布到Facebook用户墙上怎么样?检查这个link
  • 显然你对PHP对象不熟悉,代码没有错!该链接专门用于 Javascript SDK。这是PHP!我得出的结论是,这实际上是一个错误,因为我已经通过 PHP SDK 尽可能多地调试了它,但我仍然无法让它工作。 Facebook 也承认这可能是一个错误并正在调查它,希望不会花太长时间,因为这显然是一个非常可怕的问题!
  • 看看这个可能对你有帮助stackoverflow.com/questions/7570335/…
  • ...urlencode("example.com/facebook-event/$this->area_rel/…) 是否可以直接在双引号内使用对象调用 [$this->facebook_event_reply_id]?我从来没有得到它的替代值,我用它来连接它。
  • @SamArulRaj,我看过这个问题,它与这个问题无关,因为它指的是 javascript SDK。

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


【解决方案1】:

根据以往经验最可能的解释:

  • 您在活动页面上有一个 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

【讨论】:

  • 非常感谢您的回复,我现在就试试这个调试测试。页面上的 og:url 就是页面的 url!因此,它不会将其重定向到不同的地址。这是否意味着为了修复它,我必须删除 og:url 元标记?
  • Facebook 在抓取您的 URL 时收到的相同输出 - 我通常会删除其中没有“元”的任何行 - 这可以检查 Facebook 是否真的检测到您认为的内容我假设顺便说一句,og:type 标签实际上并未像错误消息中所说的那样设置为网站
  • 我怎样才能去掉除了元标记之外的所有内容,因为目前我无法向上滚动到足以看到整页。是的,og:type 设置为“example:event”,其中 example 是我的应用程序。奇怪的是,如果我在服务器上使用 curl 调用 url,它就可以工作。唯一不起作用的地方是 PHP Facebook SDK。我对此进行了调试,到目前为止还没有找到导致它的原因。
  • 据此,它看到网页绝对没问题。所有标签都正确
  • 在不了解网站和应用程序的情况下,此时我无法想到其他任何东西 - 您在调试工具中看到的错误可能不正确:/
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多