it-swarm.com.de

Hat sich Facebook sharer.php geändert, um keine detaillierten Parameter mehr zu akzeptieren?

Wir haben ein Popup zum Teilen (über window.open) mit der URL "like" geöffnet

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

und bis zu einem unbekannten Zeitpunkt im letzten Monat war alles in Ordnung.

Was jetzt passiert, ist; Das Popup-Dialogfeld wird angezeigt und enthält den Titel, die Beschreibung, das Bild und die URL, die von den Abfragezeichenfolgenparametern bereitgestellt werden. Wenn der Beitrag jedoch gesendet wird, fehlen dem resultierenden Pinnwandbeitrag auf Facebook Titel, Beschreibung und Bild, obwohl er weiterhin mit dem verknüpft ist richtige URL.

Weiß jemand, ob es in letzter Zeit Änderungen gegeben hat, die plötzlich dazu geführt haben könnten, dass dies nicht mehr funktioniert?

Einige häufige Antworten vorwegnehmen:

  • "sharer.php URL war veraltet" - die Nutzung schien fortzufahren und es bestand Einigkeit darüber, dass dies weitgehend als störend angesehen wurde - ich habe keine konkreten Hinweise dafür gesehen, dass es plötzlich nicht mehr funktionieren sollte - hätte möglicherweise etwas verpasst

  • "Verwenden Sie JavaScript SDK/diese OG Meta-Tags" - in meiner spezifischen Situation nicht möglich - vertrauen Sie mir einfach ... Ich kann erklären, wenn Sie wirklich wollen, aber es ist wirklich nicht relevant.

  • "Feed-Dialog verwenden" - Nicht geeignet, da das Posten mit Anhängen auf FB-Seiten nicht unterstützt wird

96
tdous

Facebook unterstützt keine benutzerdefinierten Parameter mehr in sharer.php

Der Sharer akzeptiert keine benutzerdefinierten Parameter mehr und Facebook ruft die Informationen, die in der Vorschau angezeigt werden, so ab, wie sie auf Facebook als Beitrag aus den URL-OG-Metatags angezeigt würden.

Benutze dialog/feeds anstelle von 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

Offizielle Antwort von fb team

102
jsnjack

Ab dem 18. Juli 2017 hat Facebook beschlossen, benutzerdefinierte Parameter, die von Benutzern festgelegt wurden, nicht mehr zu berücksichtigen. Diese Auswahl blockiert viele der Möglichkeiten, die diese Antwort bietet, und bricht auch die Schaltflächen, die auf mehreren Websites verwendet werden.

Die Parameter quote und hashtag funktionieren ab Dezember 2018.


Weiß jemand, ob es in letzter Zeit Änderungen gegeben hat, die plötzlich dazu geführt haben könnten, dass dies nicht mehr funktioniert?

Die Parameter haben sich geändert. Die aktuell akzeptierte Antwort lautet:

Facebook unterstützt keine benutzerdefinierten Parameter mehr in sharer.php

Aber das ist nicht ganz richtig. Nun, vielleicht haben sie nicht Unterstützung oder Unterstützung sie, aber benutzerdefinierte Parameter können verwendet werden , wenn Sie die richtigen Namen kennen. Diese schließen ein:

  • URL (natürlich) → u
  • benutzerdefiniertes Bild → picture
  • benutzerdefinierter Titel → title
  • individuelles Angebot → quote
  • benutzerdefinierte Beschreibung → description
  • beschriftung (alias Website-Name) → caption

Zum Beispiel können Sie genau diese Frage mit der folgenden URL teilen:

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.

Probieren Sie es aus!

Ich habe ein Tool erstellt, mit dem es einfacher ist, URLs auf Facebook mit benutzerdefinierten Parametern zu teilen. Sie können es verwenden, um Ihren sharer.php - Link zu generieren. Drücken Sie einfach die Taste und kopieren Sie die URL von der sich öffnenden Registerkarte.

91

Ihr Problem wird durch das Fehlen von Markern OpenGraph verursacht, da Sie sagen, dass es aus irgendeinem Grund nicht möglich ist, dass Sie implementieren.

Für Sie ist die einzige Lösung die Verwendung der PHP-Facebook-API .

  1. Zuerst müssen Sie die Anwendung in Ihrem Facebook-Konto erstellen.
  2. Beim Erstellen der Anwendung haben Sie zwei Schlüsseldaten für Ihren Code:

    YOUR_APP_ID 
    YOUR_APP_SECRET
    
  3. Laden Sie das Facebook PHP SDK von hier herunter.

  4. Sie können mit diesem Code beginnen, um Inhalte von Ihrer Website freizugeben:

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

Weitere Beispiele finden Sie auf der Facebook Developers Site:

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

3
Joseph Collins

Ich überprüfe Ihre verwendete URL:

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

und sehen diese Unterschiede:

  1. Die gemeinsam genutzte URL ist nicht dieselbe.
  2. Die Saiten sind in unterschiedlicher Reihenfolge. (Weiß nicht, ob sich das auswirkt).

Ich benutze diese URL-Zeichenfolge:

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

In den Abschnitten "title" und "summary" verwende ich die PHP-Funktion urlencode(); wie folgt:

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

Und gut für mich.

1
Joseph Collins