web-dev-qa-db-fra.com

Facebook sharer.php a-t-il changé pour ne plus accepter les paramètres détaillés?

Nous avons ouvert une fenêtre contextuelle de partage (via window.open) avec l’URL suivante:

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

et jusqu’à un moment inconnu du mois dernier, tout allait bien.

Ce qui se passe maintenant est; la boîte de dialogue contextuelle apparaît et inclut correctement le titre, la description, l'image et l'URL fournis par les paramètres de la chaîne de requête, mais lorsque la publication est soumise, la publication murale résultante sur Facebook ne contient pas le titre, la description et l'image, bien qu'elle soit toujours liée au message. URL correcte.

Est-ce que quelqu'un sait s'il y a eu des changements récents qui auraient pu empêcher soudainement que cela fonctionne?

Prévention de certaines réponses communes:

  • "l'URL de sharer.php était obsolète" - l'utilisation semblait se poursuivre et il semblerait que le consensus se dégageait: il était en grande partie considéré comme persistant - je n'ai vu aucune indication spécifique indiquant qu'il aurait dû cesser soudainement de fonctionner - aurait pu manquer quelque chose

  • "Utiliser JavaScript SDK/ces balises méta OG" - pas possible dans ma situation spécifique - faites-moi confiance ... je peux vous expliquer si vous voulez VRAIMENT mais ce n'est vraiment pas pertinent.

  • "Utiliser la boîte de dialogue de fil" - ne convient pas en raison d'un manque de support pour la publication de pièces jointes sur des pages FB

96
tdous

Facebook ne prend plus en charge les paramètres personnalisés dans sharer.php

Le partageeur n'acceptera plus les paramètres personnalisés et Facebook extraira les informations affichées dans l'aperçu de la même manière que si elles étaient affichées sur Facebook sous forme de publication à partir des méta-tags d'URL OG.

tilisez dialog/feeds au lieu de 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

Réponse officielle de l'équipe fb

102
jsnjack

À partir du 18 juillet 2017, Facebook a décidé de ne pas tenir compte des paramètres personnalisés définis par les utilisateurs. Ce choix bloque de nombreuses possibilités offertes par cette réponse et coupe également les boutons utilisés sur plusieurs sites Web.

Les paramètres quote et hashtag fonctionnent à partir de décembre 2018.


Est-ce que quelqu'un sait s'il y a eu des changements récents qui auraient pu empêcher soudainement que cela fonctionne?

Les paramètres ont changé. La réponse actuellement acceptée indique:

Facebook ne prend plus en charge les paramètres personnalisés dans sharer.php

Mais ceci n’est pas tout à fait correct . Eh bien, peut-être ne le supportent-ils pas ou approuvez , mais des paramètres personnalisés peuvent être utilisés si vous connaissez les noms corrects. Ceux-ci inclus:

  • URL (bien sûr) → u
  • image personnalisée → picture
  • titre personnalisé → title
  • devis personnalisé → quote
  • description personnalisée → description
  • légende (nom du site Web) → caption

Par exemple, vous pouvez partager cette question avec l'URL suivante:

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.

Essayez-le!

J'ai construit n outil qui facilite le partage des URL sur Facebook avec des paramètres personnalisés. Vous pouvez l’utiliser pour générer votre lien sharer.php, il vous suffit d’appuyer sur le bouton et de copier l’URL de l’onglet qui s’ouvre.

91
Andrea Lazzarotto

Votre problème est dû au manque de marqueurs OpenGraph, car vous dites qu'il n'est pas possible de l'implémenter pour une raison quelconque.

Pour vous, la seule solution consiste à utiliser l'API Facebook de Facebook .

  1. Tout d'abord, vous devez créer l'application dans votre compte facebook.
  2. Lors de la création de l'application, vous aurez deux données clés pour votre code:

    YOUR_APP_ID 
    YOUR_APP_SECRET
    
  3. Téléchargez le SDK Facebook PHP à partir de ici .

  4. Vous pouvez commencer avec ce code pour partager le contenu de votre site:

    <?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>
    

Vous pouvez trouver plus d'exemples sur le site Facebook des développeurs:

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

3
Joseph Collins

Je passe en revue votre URL en cours d'utilisation:

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

et voir ces différences:

  1. L'URL de partage n'est pas la même.
  2. Les chaînes sont dans un ordre différent. (Je ne sais pas si cela affecte).

J'utilise cette chaîne d'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

Dans les sections "title" et "summary", j'utilise la fonction php urlencode(); comme ceci:

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

Et fonctionne bien pour moi.

1
Joseph Collins