paz*_*zof 3 php curl facebook facebook-graph-api
事实:我运行一个简单的网站,其中包含通过抓取第三方网站/博客等动态获取的文章,文章(新文章每半小时左右到达我的网站),我希望在我的Facebook页面上发布的文章.每篇文章通常包括图像,标题和一些文本.
问题:我在Facebook上发布的大多数(几乎所有)文章都没有正确发布 - 他们的图像丢失了.
低效的解决方案:使用Facebook的调试器(这个)我提交一篇文章的URL(来自我网站的URL,而不是原始来源的URL),然后Facebook扫描/抓取URL并正确提取所需信息(图像,标题,文本等) ).在此操作之后,文章可以正确地发布在Facebook上 - 没有丢失的图像或任何东西.
目标:我所追求的是一种创建流程的方法,该流程将向Facebook的调试器提交URL,从而迫使Facebook扫描/抓取URL,以便可以正确发布.我相信我需要做的是创建一个包含URL的HTML POST请求并将其提交给Facebook的调试器.这是正确的方法吗?如果是的话,因为我以前没有使用CURL的经验,在PHP中使用CURL的正确方法是什么?
附注:作为旁注,我应该提到我正在为我的文章使用短网址,虽然我不认为这是问题的原因,因为即使我使用规范网址时问题仍然存在.
此外,正确设置了Open Graph元标记(og:image,og:description等).
您可以使用Facebook图形API调试图形对象PHP-cURL,通过执行POST操作
https://graph.facebook.com/v1.0/?id={Object_URL}&scrape=1
Run Code Online (Sandbox Code Playgroud)
为了使事情更容易,我们可以将调试器包装在一个函数中:
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;
}
Run Code Online (Sandbox Code Playgroud)
虽然这会更新并清除传递的Facebook缓存URL,但是打印出每个密钥及其内容并在同一时间避免错误有点困难,但是我建议使用var_dump()或者print_r()OR PHP-ref
用法 PHP-ref
r( facebookDebugger('http://retrogramexplore.tumblr.com/') );
Run Code Online (Sandbox Code Playgroud)
