事实:我经营一个简单的网站,其中包含文章、通过抓取第三方网站/博客等动态获取的文章(新文章每半小时左右到达我的网站)、文章我想在我的 Facebook 页面上发帖。每篇文章通常包括一张图片、一个标题和一些文本。
问题:我在 Facebook 上发布的大部分(几乎所有)文章都没有正确发布——它们的图片丢失了。
低效解决方案:使用 Facebook 的调试器 (this one)我向它提交一篇文章的 URL(来 self 的网站的 URL,而不是原始来源的 URL)然后 Facebook 扫描/抓取该 URL 并正确提取所需的信息(图像、标题、文本等)。执行此操作后,文章可以正确发布到 Facebook - 没有丢失图片或任何内容。
目标:我所追求的是一种创建流程的方法,该流程将 URL 提交给 Facebook 的调试器,从而迫使 Facebook 扫描/抓取 URL,以便它可以正确发布。我相信我需要做的是创建一个包含 URL 的 HTML POST 请求并将其提交给 Facebook 的调试器。这是正确的方法吗?如果是,由于我以前没有使用 CURL 的经验,那么在 PHP 中使用 CURL 的正确方法是什么?
旁注:作为旁注,我应该提到我在文章中使用短 URL,尽管我不认为这是问题的原因,因为即使在我使用规范的 URL。
此外,Open Graph 元标记设置正确(og:image、og:description 等)。
最佳答案
您可以使用带有 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 和 Facebook : facebook-debug a URL using CURL and Facebook debugger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24758526/