Хобрук: Ваш путь к мастерству в программировании

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, зарегистрированная кем-то еще developers.facebook.com/bugs/563991033677853, поэтому Я бы посоветовал кому-нибудь еще, у кого возникла проблема, помочь пометить это с помощью FB, перейдя туда и подтвердив, что у вас тоже есть эта проблема. 07.01.2014
  • ОБНОВЛЕНИЕ для всех, кто сталкивается с такой же проблемой ... Другие люди, которые сообщили об этом как об ошибке в Facebook, не были настолько горячими в предоставлении подробностей заранее или ответе на информацию, поэтому я повторно отправил новый отчет об ошибке, и он был назначен разработчику. Просто жду новостей от FB. developers.facebook.com/x/bugs/357750474364812 21.01.2014
  • К сожалению, принятый ответ верен. После 3 месяцев ожидания исправления ошибки они изменили приемлемое поведение sharer.php, поэтому эти параметры больше нельзя использовать. 06.05.2014

Ответы:


1

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

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

Используйте dialog / feeds вместо 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

09.04.2014
  • Опередите меня, чтобы ответить на мой собственный вопрос;) 10.04.2014
  • но в этом случае вам понадобится идентификатор приложения. Что, если это просто веб-сайт? 27.05.2014
  • От Facebook: диалоговое окно веб-канала устарело в API версии 2.0. В сети разработчикам рекомендуется использовать более современный диалог общего доступа, который может выполнять все те же функции, что и эти старые диалоги, но может дополнительно публиковать пользовательские истории Open Graph без необходимости входа в Facebook. developers.facebook.com/docs/sharing/reference/share-dialog 29.07.2014
  • Если возможно, я бы предложил использовать Facebook SDK с JavaScript. Кодировать намного проще, и я считаю, что это гораздо менее требовательно, чем использование формы ссылки выше. Взгляните на: developers.facebook.com/docs/sharing/web 16.03.2016
  • @L LiquidDrummer: весь смысл использования этих типов URL-адресов в том, чтобы вам не приходилось использовать SDK. Он добавляет ненужной производительности вашей странице, помогает FB вторгаться в личную жизнь людей и не проще простого тега <a> или open() вызова. 16.02.2017

  • 2

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

    Параметры quote и hashtag работают по состоянию на декабрь 2018 г.


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

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

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

    Но это не совсем правильно. Что ж, возможно, они их не поддерживают или одобряют, но можно использовать специальные параметры если вы знаете правильные имена. Это включает:

    • URL (конечно) → u
    • собственное изображение → picture
    • произвольное название → title
    • индивидуальная цитата → 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-адрес из открывшейся вкладки.

    29.10.2016
  • Большое спасибо, это здорово! 04.12.2016
  • Отличный ответ! Большое спасибо! 06.03.2017
  • Отлично! Могу ли я настроить сообщение отправителя? 09.05.2017
  • @ TakácsZsolt Я не думаю, что можно заранее заполнить это сообщение, но если вы найдете способ, дайте мне знать. 09.05.2017
  • @AndreaLazzarotto с этим решением вы можете, но вы должны использовать js-функцию encodeURIComponent () для каждой части данного параметра. Но вы не можете настроить официальную кнопку Поделиться: / 30.05.2017
  • @ TakácsZsolt Вам не нужен JS на странице, вы можете просто сгенерировать URL-адрес на стороне сервера в вашей CMS или пользовательском коде, а затем предоставить пользователю простой URL-адрес. Официальная кнопка общего доступа плохая, потому что она включает в себя тонны КБ JS-кода и отслеживает пользователей. Кроме того, если вы делитесь своими собственными URL-адресами, вам лучше использовать правильные теги OpenGraph, а не полагаться на Facebook параметры доли. :) 30.05.2017
  • Раньше я реализовывал кнопки таким образом. Работал всегда, но остановился. Июль 2017. Есть какие-нибудь новости по этому поводу? 27.07.2017
  • @Garavani, да, ты прав. Как обсуждалось в комментариях к инструменту, они устарели и удалили параметры. 27.07.2017
  • Проверьте ответ Ханнеса здесь: stackoverflow.com/questions/23781698/ Это сработало для меня. Даже после июля 2017 года. 07.09.2017
  • @Garavani, да, можно создать собственное приложение и внедрить Facebook JS (который не является легковесным и отслеживает пользователей). Но можно ли составить простой URL-адрес? Согласно документам, это не так. 07.09.2017
  • Честно говоря, я понятия не имею о приложениях Facebook, отслеживании и т. Д. Звучит не так круто. Как кажется (я много гуглил), нет, простой URL-адрес с параметрами больше не работает, как вы сами заявили. Однако я реализовал решение Ханнеса. И не думайте даже о Google+… Проблема индивидуального совместного доступа становится все более и более болезненной. Угадайте, поэтому кажется, что он просто исчезает на многих сайтах. Жаль, потому что это отличный инструмент для распространения контента. 07.09.2017
  • @Andrea: Есть ли разница в опыте пользователя между общим ресурсом, который у вас (у нас) раньше был со ссылкой на параметр, и назойливым, но рабочим решением, которое я цитировал выше? 07.09.2017
  • @Garavani, к сожалению, есть. См., Например, (1) (2) (3) (4) (5). Я бы хотел, чтобы этого не было, потому что это было бы намного проще. 07.09.2017
  • @Andrea: спасибо за классную и хорошо собранную информацию! Думаю выбросить их. Проклятье Facebook. 08.09.2017
  • @Garavani пожалуйста. Промежуточным решением может стать старый добрый проект Social Share Privacy: panzi.github.io/SocialSharePrivacy 08.09.2017
  • @Andrea: вы также можете проверить, как они это сделали (даже для отдельных слайдов), посмотрите ниже на этой странице: chanel.com/en_WW/fashion/collection/ 09.09.2017
  • По состоянию на апрель 2018 года все параметры, кроме u, игнорируются. 25.04.2018
  • Кроме u, единственный параметр, который я вижу отраженным, - это quote 10.09.2018
  • @robskrob вы читали гигантское уведомление, которое было добавлено к этому ответу через несколько месяцев после его написания? 12.09.2018
  • @AndreaLazzarotto Я прочитал уведомление и, перечитывая его, вижу следующее The quote parameters still works, которое не было выделено жирным шрифтом. Полагаю, я это пропустил. Также в духе продуктивного диалога я смог настроить общий ресурс facebook (изображение, заголовок, описание и т. Д.), Настроив og:#{property} в теге meta каждой страницы, как указано здесь в документации facebook: developers.facebook.com/docs/plugins/share-button - так что если кто-то хочет иметь больше контроля над тем, как выглядят их акции FB, я рекомендую нажать на ссылку кнопки общего доступа выше в этом комментарии. 17.09.2018
  • Я могу подтвердить, что параметры цитаты и хэштега все еще работают в январе 2020 года. Я использую это для обмена ссылками на документы PDF, потому что Facebook не может прочитать заголовок PDF, а URL-адрес не всегда может передавать фактическое название PDF. Другой (уродливый) обходной путь - это ссылка на специальную ссылку для загрузки, которая будет страницей с наборами og: title и og: image, которые могут иметь фактическую ссылку для загрузки. 27.01.2020
  • @Spellcoder Недавно я нашел специальное предложение на пожизненную учетную запись стороннего сервиса, который делает именно это. Я не буду ссылаться на него, так как это может быть рассмотрено как спам. Он называется Poplink, но есть несколько маркетинговых сервисов, которые работают аналогично. 27.01.2020

  • 3

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

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

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

      YOUR_APP_ID 
      YOUR_APP_SECRET
      
    3. Загрузите PHP SDK для Facebook с здесь.

    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

    28.02.2014
  • Вы правы, Джозеф, и я надеюсь, что предоставленная вами информация будет полезна тем, кто найдет эту страницу. Из-за этого я проголосовал за это. Я только не пометил это как ответ, потому что мы уже знали, что нам придется вернуться к PHP, если Facebook не отменит внесенные изменения. Полное решение, на которое я надеюсь, способ использования URL-адреса общего доступа аналогичен тому, как он работал раньше, может не существовать ни сейчас, ни в будущем. Но спасибо за ваш ответ, и я надеюсь, что он будет кому-то полезен в этой ситуации. 17.03.2014

  • 4

    Я просматриваю ваш 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); ?>
    

    И у меня все работает нормально.

    28.02.2014
  • Это все еще работает на вашей стороне? Когда я пробую ваш пример URL, я не получаю заголовок и резюме! 28.02.2014
  • @vcarel Это работает только с OpenGraph, вот в чем проблема. Опубликуйте другой метод в другом ответе. 28.02.2014
  • @JosephCollins В ответ на ваши различия: 1. URL-адрес hxxp: //facebook.com/sharer.php просто перенаправляет на hxxp: //facebook.com/sharer/sharer.php, я предполагаю, что он обратно совместим с предыдущим совместным использованием характерная черта. 2. Порядок полей не имеет значения. На всякий случай попробовала ваш заказ, проблема не исчезла. Как я сказал в своем первоначальном вопросе, это сработало правильно, но однажды это не сработало без каких-либо изменений с нашей стороны. Facebook признал это ошибкой, так что проблема не только в формате URL. Но они определенно не торопятся, делая что-нибудь с этим. 28.02.2014

  • 5

    Если вы закодируете & в своем URL-адресе на% 26, он будет работать правильно. Просто протестировано и проверено.

    30.08.2019
  • Охвачено другими ответами, а также недостаточно тщательным, чтобы добавить ценность. 30.08.2019
  • Новые материалы

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

    GraalVM в 2022 году: итоги года
    2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..


    © 2024 hobruk.ru, Хобрук: Ваш путь к мастерству в программировании