Сменил ли Facebook sharer.php больше нет подробных параметров?

Мы открываем всплывающее окно совместного доступа (через window.open) с URL-адресом, подобным

https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE 

и до некоторой неизвестной точки за последний месяц или около того все было в порядке.

Что происходит сейчас; появляется диалоговое окно всплывающего окна и правильно включает в себя заголовок, описание, изображение и URL-адрес, предоставленные параметрами строки запроса, но когда сообщение отправлено, в результирующем сообщении на стене на Facebook отсутствует заголовок, описание и изображение, хотя оно все еще связано с правильный URL.

Кто-нибудь знает, были ли недавние изменения, которые могли бы внезапно остановить это от работы?

Предотвращение некоторых распространенных ответов:

  • «URL-адрес sharer.php устарел» – использование, казалось, продолжалось, и, похоже, консенсус заключался в том, что его в значительной степени считали похожим на то, что я не видел никаких конкретных указаний на то, что он должен был внезапно прекратить работу – возможно, что-то пропустил

  • «Использовать JavaScript SDK / эти метатеги OG» – не возможно в моей конкретной ситуации – просто поверьте мне … Я могу объяснить, хотите ли вы ДЕЙСТВИТЕЛЬНО, но это действительно не актуально.

  • «Использовать диалог подачи» – не подходит из-за отсутствия поддержки для публикации с прикрепленными файлами на страницах FB

Facebook больше не поддерживает пользовательские параметры в sharer.php

Сплиттер больше не будет принимать пользовательские параметры, и facebook вытащит информацию, отображаемую в предварительном просмотре, так же, как она появится на facebook, как сообщение из метатегов URL-адреса url.

Использовать диалог / каналы вместо sharer.php

 https://www.facebook.com/dialog/feed? app_id=145634995501895 &display=popup&caption=An%20example%20caption &link=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fdialogs%2F &redirect_uri=https://developers.facebook.com/tools/explorer 

Официальный ответ команды fb

Начиная с 18 июля 2017 года Facebook решил игнорировать пользовательские параметры, установленные пользователями. Этот выбор блокирует многие возможности, предлагаемые этим ответом, а также разрывает кнопки, используемые на нескольких сайтах.

Параметры quote все еще работают.


Кто-нибудь знает, были ли недавние изменения, которые могли бы внезапно остановить это от работы?

Параметры изменены. В принятом в настоящее время ответе говорится:

Facebook больше не поддерживает пользовательские параметры в sharer.php

Но это не совсем правильно. Возможно, они не поддерживают или не поддерживают их, но пользовательские параметры могут использоваться, если вы знаете правильные имена. К ним относятся:

  • URL (конечно) → u
  • пользовательское изображение → picture
  • пользовательское название → title
  • Пользовательская цитата → quote
  • пользовательское описание → description
  • подпись (также название веб-сайта) → caption

Например, вы можете поделиться этим вопросом со следующим URL-адресом:

 http://img.ruphp.com/javascript/login.php&title=A+nice+question+about+Facebook&quote=Does+anyone+know+if+there+have+been+recent+changes+which+could+have+suddenly+stopped+this+from+working%3F&description=Apparently%2C+the+accepted+answer+is+not+correct. 

Попробуй!

Я создал инструмент, который упрощает обмен URL-адресами на Facebook с настраиваемыми параметрами. Вы можете использовать его для создания ссылки sharer.php , просто нажмите кнопку и скопируйте URL-адрес с вкладки, которая открывается.

Ваша проблема вызвана отсутствием маркеров OpenGraph, поскольку вы говорите, что по какой-то причине вы не реализуете.

Для вас единственным решением является использование PHP Facebook API .

  1. Сначала вы должны создать приложение в своей учетной записи facebook.
  2. При создании приложения у вас будет два ключевых данных для вашего кода:

     YOUR_APP_ID YOUR_APP_SECRET 
  3. Скачайте PHP PHP SDK отсюда .

  4. Вы можете начать с этого кода для совместного использования контента с вашего сайта:

     <?php // Remember to copy files from the SDK's src/ directory to a // directory in your application on the server, such as php-sdk/ require_once('php-sdk/facebook.php'); $config = array( 'appId' => 'YOUR_APP_ID', 'secret' => 'YOUR_APP_SECRET', 'allowSignedRequest' => false // optional but should be set to false for non-canvas apps ); $facebook = new Facebook($config); $user_id = $facebook->getUser(); ?> <html> <head></head> <body> <?php if($user_id) { // We have a user ID, so probably a logged in user. // If not, we'll get an exception, which we handle below. try { $ret_obj = $facebook->api('/me/feed', 'POST', array( 'link' => 'www.example.com', 'message' => 'Posting with the PHP SDK!' )); echo '<pre>Post ID: ' . $ret_obj['id'] . '</pre>'; // Give the user a logout link echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>'; } catch(FacebookApiException $e) { // If the user is logged out, you can have a // user ID even though the access token is invalid. // In this case, we'll get an exception, so we'll // just ask the user to login again here. $login_url = $facebook->getLoginUrl( array( 'scope' => 'publish_stream' )); echo 'Please <a href="' . $login_url . '">login.</a>'; error_log($e->getType()); error_log($e->getMessage()); } } else { // No user, so print a link for the user to login // To post to a user's wall, we need publish_stream permission // We'll use the current URL as the redirect_uri, so we don't // need to specify it here. $login_url = $facebook->getLoginUrl( array( 'scope' => 'publish_stream' ) ); echo 'Please <a href="' . $login_url . '">login.</a>'; } ?> </body> </html> 

Вы можете найти больше примеров на сайте разработчиков Facebook:

https://developers.facebook.com/docs/reference/php

Я просматриваю ваш url в использовании:

 https://www.facebook.com/sharer/sharer.php?s=100&p[title]=EXAMPLE&p[summary]=EXAMPLE&p[url]=EXAMPLE&p[images][0]=EXAMPLE 

и посмотрите на это:

  1. URL-адрес получателя не совпадает.
  2. Строки находятся в другом порядке. (Не знаю, влияет ли это).

Я использую эту строку URL:

 http://img.ruphp.com/javascript/login.php&p[title]=Title&p[summary]=Summary 

В разделе «title» и «summary» я использую функцию php urlencode(); как это:

 <?php echo urlencode($detail->title); ?> 

И отлично работает для меня.