PHP& Facebook:facebook-使用CURL和Facebook调试器调试URL

时间:2014-07-15 12:43:24

标签: php facebook facebook-graph-api curl

事实:我运行一个简单的网站,其中包含通过抓取第三方网站/博客等动态获取的文章,文章(新文章每半小时左右到达我的网站),文章哪些我希望在我的Facebook页面上发帖。每篇文章通常都包含图片,标题和一些文字。

问题:我在Facebook上发布的大多数(几乎所有)文章都没有正确发布 - 他们的图片丢失了。

低效解决方案:使用Facebook的调试器(this one)我向其提交文章的网址(来自我网站的网址,而不是原始来源的网址),然后Facebook会扫描/抓取网址并正确提取所需的信息(图像,标题,文本等)。在此操作之后,文章可以正确地发布在Facebook上 - 没有丢失的图像或任何东西。

目标:我所追求的是一种创建流程的方法,该流程将向Facebook的调试器提交URL,从而迫使Facebook扫描/抓取URL,以便可以正确发布。我相信我需要做的是创建一个包含URL的HTML POST请求并将其提交给Facebook的调试器。这是正确的方法吗?如果是的话,因为我以前没有使用过CURL的经验,在PHP中使用CURL的正确方法是什么?

附注> :作为旁注,我应该提一下,我正在为我的文章使用短网址,虽然我不认为这是问题的原因,因为问题仍然存在,即使我使用规范网址。

此外,正确设置了Open Graph元标记(og:image,og:description等)。

1 个答案:

答案 0 :(得分:9)

您可以使用带有PHP-cURL的Facebook图表API调试图形对象,方法是POST

https://graph.facebook.com/v1.0/?id={Object_URL}&scrape=1

为了使事情更容易,我们可以将调试器包装在一个函数中:

function facebookDebugger($url) {

        $ch = curl_init();
              curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/v1.0/?id='. urlencode($url). '&scrape=1');
              curl_setopt($ch, CURLOPT_POST, 1);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $r = curl_exec($ch);
        return $r;

}

虽然这会更新&清除已通过的URL的Facebook缓存,打印出每个密钥&它的内容并避免同时出错,但我建议使用var_dump()print_r()PHP-ref

使用PHP-ref

r( facebookDebugger('http://retrogramexplore.tumblr.com/') );

PHP-ref output