PHP и Facebook: facebook-отлаживать URL-адрес, используя CURL и отладчик Facebook

Факты . Я запускаю простой веб-сайт, содержащий статьи, статьи, динамически полученные путем соскабливания сторонних сайтов / блогов и т. Д. (Новые статьи поступают на мой сайт каждые полчаса или около того), статьи, которые я хочу опубликовать на моей странице в facebook. Каждая статья обычно включает изображение, заголовок и текст.

Проблема . Большинство (почти всех) статей, которые я публикую на Facebook, отправляются неправильно – их изображения отсутствуют.

Неэффективное решение . Используя отладчик Facebook (этот), я отправляю URL-адрес статьи (URL-адрес с моего сайта, а не URL-адрес исходного источника), а затем просматривает / удаляет URL-адрес и правильно извлекает необходимую информацию (изображение, название, текст и т. Д.). ). После этого действия статья может быть опубликована на Facebook правильно – никаких недостающих изображений или чего-либо еще.

Цель : то, что мне нужно, – это способ создания процесса, который будет отправлять URL-адрес отладчику Facebook, тем самым вынуждая Facebook сканировать / очищать URL-адрес, чтобы он мог быть правильно отправлен. Я считаю, что мне нужно сделать, чтобы создать запрос POST HTML, содержащий URL-адрес, и отправить его на отладчик Facebook. Правильно ли это? И если да, поскольку у меня нет предыдущего опыта работы с CURL, каков правильный способ сделать это, используя CURL в PHP?

Примечания : В качестве примечания следует отметить, что я использую короткие URL-адреса для своих статей, хотя я не думаю, что это является причиной проблемы, потому что проблема сохраняется, даже когда я использую канонические URL-адреса.

Кроме того, метатеги Open Graph установлены правильно (og: image, og: description и т. Д.).

Вы можете отлаживать объект графа с помощью графического API Facebook с помощью PHP-cURL , выполнив 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; } 

хотя это позволит обновить и очистить кеш Facebook для переданного URL , немного сложно распечатать каждый ключ и его содержимое и избежать ошибок в одно и то же время, однако я рекомендовал использовать var_dump() или print_r() или PHP-ref

использование с PHP-ref

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

Выход PHP-ref