Ma Facebook sharer.PHP zmienił się na nie akceptuje szczegółowych parametrów?

Otwieramy wyskakujące okienko udostępniania (poprzez okno.Otwórz) z adresem URL jak

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

I do jakiegoś nieznanego punktu w ostatnim miesiącu lub tak wszystko było w porządku.

To, co dzieje się teraz jest; okno dialogowe pojawia się i poprawnie zawiera tytuł, opis, obraz i adres URL podany przez parametry ciągu zapytania, ale gdy post jest przesyłany, wynikowy post na ścianie na Facebook brakuje tytułu, opisu i obrazu, choć nadal łączy się z poprawnym URL.

Czy ktoś wie, czy były ostatnie zmiany, które mogły nagle powstrzymać to działanie?

Uprzedzam kilka typowych odpowiedzi:

  • "sharer.PHP URL was deprecated " - usage seemed to continue and it wydawało się, że konsensus był taki, że w dużej mierze uważano go za trzymanie się-nie widziałem żadnych konkretnych wskazań, że to should have suddenly stopped working-might have missed something

  • "Użyj JavaScript SDK / these OG meta tags " - nie jest to możliwe w moim konkretnym sytuacja-zaufaj mi ... Mogę wyjaśnić, jeśli naprawdę chcesz, ale to naprawdę nieistotne.

  • "użyj okna kanału" - nie nadaje się z powodu braku wsparcia dla publikowanie z załącznikami na stronach FB

Author: tdous, 2014-01-06

4 answers

Facebook nie obsługuje już niestandardowych parametrów w sharer.php

Sharer nie będzie już akceptował niestandardowych parametrów, a facebook wyciągnij informacje, które są wyświetlane w podglądzie tak samo sposób, że pojawi się na facebook jako post z meta url og tagi.

Użyj dialog / feeds zamiast 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

Oficjalna odpowiedź zespołu fb

 99
Author: jsnjack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-24 11:41:18

Od 18 lipca 2017 roku Facebook zdecydował się ignorować niestandardowe parametry ustawiane przez użytkowników. Ten wybór blokuje wiele możliwości oferowanych przez tę odpowiedź, a także łamie przyciski używane na kilku stronach internetowych.

Parametry quote nadal działają.


Czy ktoś wie, czy były ostatnie zmiany, które mogły nagle zatrzymać to działanie?

Parametry uległy zmianie. Aktualnie akceptowana odpowiedź Stany:

Facebook nie obsługuje już niestandardowych parametrów w sharer.php

Ale to jest nie do końca poprawne. cóż, może nie wspierają lub wspierają, ale niestandardowe parametry mogą być używane jeśli znasz poprawne nazwy. Należą do nich:

  • URL (oczywiście) → u
  • custom image → picture
  • custom title → title
  • custom quote → quote
  • własny opis → description
  • caption (aka website name) → caption

Na przykład, możesz podzielić się tym pytaniem z następującym adresem 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.

Spróbuj!

Zbudowałem narzędzie, które ułatwia udostępnianie adresów URL na Facebook z niestandardowymi parametrami. Możesz go użyć do wygenerowania linku sharer.php, po prostu naciśnij przycisk i skopiuj adres URL z otwartej karty.

 84
Author: Andrea Lazzarotto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-28 13:31:48

Twój problem jest spowodowany brakiem znaczników OpenGraph, ponieważ mówisz, że nie jest możliwe, aby zaimplementować z jakiegoś powodu.

Dla Ciebie jedynym rozwiązaniem jest użycie PHP Facebook API .

  1. najpierw musisz utworzyć aplikację na swoim koncie facebook.
  2. Podczas tworzenia aplikacji będziesz miał dwa kluczowe dane dla swojego kodu:

    YOUR_APP_ID 
    YOUR_APP_SECRET
    
  3. Pobierz Facebook PHP SDK z tutaj .

  4. Możesz zacznij od tego kodu do udostępniania treści ze swojej witryny:

    <?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>
    
Więcej przykładów można znaleźć na stronie deweloperów Facebook:

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

 3
Author: Joseph Collins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 15:24:22

Przeglądam Twój url w użyciu:

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

I zobacz te różnice:

  1. sharer URL nie jest taki sam.
  2. ciągi są w innej kolejności. (Nie wiadomo, czy ma to wpływ ).

Używam tego ciągu 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

W sekcji "tytuł" i "podsumowanie" używam funkcji php urlencode(); w następujący sposób:

<?php echo urlencode($detail->title); ?>
I działa dobrze dla mnie.
 1
Author: Joseph Collins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-28 01:43:47