103 votes

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

Nous avons été l'ouverture d'un partage de popup (par l'intermédiaire de la fenêtre.ouvert) avec l'URL de ce type

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 certain point inconnu dans le dernier mois ou si tout allait bien.

Ce qui se passe maintenant est; la boîte de dialogue contextuelle s'affiche et comprend correctement le Titre, la Description, l'Image et l'URL fournie par les paramètres de chaîne de requête, mais lorsque le poste est soumis, le mur de post sur Facebook manque le Titre, de Description et de l'Image, si elle a des liens vers la bonne URL.

Personne ne sait si il y a eu des changements récents qui pourraient avoir soudainement cessé ce travail?

Anticiper certaines réponses communes:

  • "sharer.php l'URL a été dépréciée" - utilisation semblait continuer et il semblait le consensus est qu'il a été largement considéré comme rester dans les parages - je n'ai pas vu d'indication spécifique qu'il doit ont soudainement cessé de travail - peut-être raté quelque chose

  • "Utiliser le SDK JavaScript/ces OG meta tags" - pas possible dans mon spécifiques situation - fais-moi confiance ... je peux vous expliquer si vous le voulez VRAIMENT, mais c'est vraiment pas pertinent.

  • "L'utilisation de l'alimentation de dialogue" - ne convient pas en raison du manque de soutien pour l'affichage avec les pièces jointes sur FB des pages

105voto

jsnjack Points 525

Facebook ne prend plus en charge personnalisée des paramètres en sharer.php

Le participant ne pourra plus accepter les paramètres personnalisés et facebook va tirez les informations sont affichées dans l'aperçu, la même façon à ce qu'il figure sur facebook un post à partir de l'url OG meta les balises.

Utilisez la boîte de dialogue des aliments 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 fb de l'équipe

3voto

Joseph Collins Points 56

Votre problème est causé par l'absence de marqueurs de l'OpenGraph, comme vous le dites, il n'est pas possible que vous mettre en œuvre pour une raison quelconque.

Pour vous, la seule solution est d'utiliser le PHP Facebook API.

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

    YOUR_APP_ID 
    YOUR_APP_SECRET
    
  3. Télécharger la Facebook SDK PHP à partir d' 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 dans le Facebook site des Développeurs:

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

2voto

Joseph Collins Points 56

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X