Имеет Facebook sharer.php изменен, чтобы больше не принимать подробные параметры?


мы открываем всплывающее окно общего доступа (через окна.открыть) 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.

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

упреждая некоторые общие ответы:

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

  • "использовать JavaScript SDK / эти метатеги OG" - невозможно в моем конкретном ситуация - просто поверьте мне ... Я могу объяснить, если вы действительно хотите, но это действительно не имеет значения.

  • "использовать диалог подачи" - не подходит из-за отсутствия поддержки для размещение с вложениями на страницах FB

4 91

4 ответа:

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

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

используйте диалог / каналы вместо 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 решил игнорировать пользовательские параметры, установленные пользователями. Этот выбор блокирует многие возможности, предлагаемые этим ответом, а также ломает кнопки, используемые на нескольких веб-сайтах.

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


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

параметры изменились. Настоящее время принятый ответ гласит:

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

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

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

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

https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fstackoverflow.com%2Fq%2F20956229%2F1101509&picture=http%3A%2F%2Fwww.applezein.net%2Fwordpress%2Fwp-content%2Fuploads%2F2015%2F03%2Ffacebook-logo.jpg&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. загрузите Facebook 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://www.facebook.com/sharer.php?s=100&p[url]=http://www.example.com/&p[images][0]=/images/image.jpg&p[title]=Title&p[summary]=Summary

в разделе "название" и "резюме" я использую функцию php urlencode(); такой:

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

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