Wie passe ich die sharer.php von Facebook an?

Antworten:

79

Sie sprechen über das Vorschaubild und den Text, die Facebook extrahiert, wenn Sie einen Link freigeben. Facebook verwendet das Open Graph-Protokoll , um diese Daten abzurufen.

Im Wesentlichen müssen Sie diese og:metaTags nur auf der URL platzieren, die Sie freigeben möchten.

<meta property="og:title" content="The Rock"/>
<meta property="og:type" content="movie"/>
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/>
<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
<meta property="og:site_name" content="IMDb"/>
<meta property="fb:admins" content="USER_ID"/>
<meta property="og:description"
      content="A group of U.S. Marines, under command of
               a renegade general, take over Alcatraz and
               threaten San Francisco Bay with biological
               weapons."/>

Wie Sie sehen können, gibt es sowohl eine Bildeigenschaft als auch eine Beschreibung. Wenn Sie Änderungen an Ihren Seiten- og:metaTags vornehmen , können Sie diese Änderungen mit dem Facebook-Debugger testen . Hier erfahren Sie, ob Sie Fehler gemacht haben (und wie Sie diese beheben können!).

Lix
quelle
8
Ich denke nicht, dass dies die Antwort ist ... weil diese Tags im HTML-Code fest codiert sind und daher alle fb-Schaltflächen auf der gesamten Seite dazu zwingen, diesen Werten zu entsprechen ... vielleicht habe ich 3 fb-Freigabeschaltflächen auf einer Seite und ich möchte, dass jeder ein individuelles Bild / eine Beschreibung hat. ... Richtig, Sie könnten js verwenden, um die Metawerte vor der Freigabeaktion zu ändern, aber das scheint nicht wirklich zu funktionieren, und das dynamische Ändern von Metatags scheint eine schlechte Praxis zu sein (da dies kein Zweck ist). ... Ich würde stattdessen die Lee Sibbald sharer.php-Lösung verwenden.
dsdsdsdsd
1
Wenn dies gesagt wird, verwende ich diese Meta-Tags auf jeder Seite. Wenn ein Benutzer nur die URL meiner Seite in den fb-Beitrag kopiert / einfügt, reichen diese Metas aus ... aber nicht für einzelne fb-Schaltflächen (" teile dieses Gemälde "oder" teile diesen Witz ")
dsdsdsdsd
3
In Bezug auf die dynamische Generierung von OG-Tags - Ich habe dies mehrmals mit PHP durchgeführt, wobei die OG-Tags abhängig von den QueryString-Parametern dynamisch gefüllt werden. Dies funktioniert so lange, wie die Parameter für jede Schaltfläche eindeutig sind (z. B. Hinzufügen von "? Id = 123" am Ende jeder Schaltflächen-URL und Ändern von "123" in "eindeutig"). Nach Gesprächen mit Leuten auf Facebook wurde dies nicht als schlechte Praxis eingestuft, und ich glaube, es ist vollkommen in Ordnung, auf diese Weise zu arbeiten. Beachten Sie jedoch, dass JS hierfür nicht verwendet werden kann, da der FB-Scraper keine JS-Engine hat.
Snouto
2
@dsdsdsdsd - Selbst wenn Sie eine riesige Inhaltsseite freigeben, benötigt jeder Inhalt einen eigenen Perma-Link, oder? / Dort / platzieren Sie die benutzerdefinierten OG-Tags.
Trass Vasston
Nachdem die gesamte Diskussion abgeschlossen ist. Wie lösen Sie das Problem des Facebook-Cachings auf unserer Website? Ich habe über 2 Tage lang danach gesucht. Links werden korrekt generiert, aber das Miniaturbild und der Text stammen nicht aus dem Beitrag, sondern aus zwischengespeicherten Daten des vorherigen Beitrags von meiner Website. Kann jemand dies kommentieren. Danke
58

AKTUALISIEREN:

Diese Antwort ist veraltet.

Wie @ jack-marchetti in seinem Kommentar angegeben hat, und @devantoine mit dem Link: https://developers.facebook.com/x/bugs/357750474364812/

Facebook hat die Funktionsweise von sharer.php geändert, da Ibrahim Faour auf den bei Facebook eingereichten Fehler antwortet.

Der Sharer akzeptiert keine benutzerdefinierten Parameter mehr und Facebook ruft die Informationen, die in der Vorschau angezeigt werden, auf dieselbe Weise ab, wie sie auf Facebook als Beitrag aus den URL-OG-Meta-Tags angezeigt werden.


Versuchen Sie dies (in diesem Beispiel über Javascript):

'http://www.facebook.com/sharer.php?s=100&p[title]='+encodeURIComponent('this is a title') + '&p[summary]=' + encodeURIComponent('description here') + '&p[url]=' + encodeURIComponent('http://www.nufc.com') + '&p[images][0]=' + encodeURIComponent('http://www.somedomain.com/image.jpg')

Ich habe dies schnell ohne den Bildteil versucht und das sharer.php-Fenster wird vorab ausgefüllt angezeigt, sodass es wie eine Lösung aussieht.

Ich habe dies über diesen SO-Artikel gefunden:

Willst du benutzerdefinierten Titel / Bild / Beschreibung in Facebook Share Link von einer Flash-App

und dieser Link in einer Antwort von Lelis718 enthalten:

http://www.daddydesign.com/wordpress/how-to-create-a-custom-facebook-share-button-for-your-iframe-tab/

Wir danken Lelis718 für diese Antwort.

[EDIT 3rd May 2013] - scheint, dass die ursprüngliche URL, die ich hier hatte, nicht mehr für mich funktioniert, ohne auch "s = 100" in die Abfragezeichenfolge aufzunehmen - keine Ahnung warum, aber entsprechend aktualisiert

Schnauze
quelle
1
Das ist großartig. Vielen Dank!
EzekielDFM
1
Hey @ lee-sibbald Es sieht so aus, als hätte Facebook es geändert und ich kann kein Bild mehr in diesem Dialog anzeigen. Interessant ...
Julian H. Lam
1
@ JulianH.Lam hast du die Bearbeitung bemerkt, die ich vor ein paar Tagen hinzugefügt habe? Ich benutze den oben gezeigten Link einschließlich "s = 100" und es scheint gut zu funktionieren
Snouto
4
Die p [x] -Parameter scheinen nicht mehr zu funktionieren, zumindest wenn Sie auf der betreffenden Seite Opengraph-Tags haben.
Mike Shultz
2
Der Sharer akzeptiert keine benutzerdefinierten Parameter mehr: developer.facebook.com/x/bugs/357750474364812
DevAntoine
22

Die folgende Antwort funktioniert anscheinend nicht mehr und Facebook akzeptiert keine Parameter mehr für die Links im Feed-Dialog

Sie können den Feed-Dialog über die URL verwenden, um das Verhalten von Sharer.php zu emulieren, aber es ist etwas komplizierter. Sie benötigen ein Facebook App-Setup mit der Basis-URL der URL, die Sie konfigurieren möchten. Dann können Sie Folgendes tun:

1) Erstellen Sie einen Link wie:

   http://www.facebook.com/dialog/feed?app_id=[FACEBOOK_APP_ID]' +
        '&link=[FULLY_QUALIFIED_LINK_TO_SHARE_CONTENT]' +
        '&picture=[LINK_TO_IMAGE]' +
        '&name=' + encodeURIComponent('[CONTENT_TITLE]') +
        '&caption=' + encodeURIComponent('[CONTENT_CAPTION]) +
        '&description=' + encodeURIComponent('[CONTENT_DESCRIPTION]') +
        '&redirect_uri=' + FBVars.baseURL + '[URL_TO_REDIRECT_TO_AFTER_SHARE]' +
        '&display=popup';

(Ersetzen Sie natürlich den [INHALT] durch den entsprechenden Inhalt. Dokumentation hier: https://developers.facebook.com/docs/reference/dialogs/feed )

2) Öffnen Sie diesen Link in einem Popup-Fenster mit JavaScript, indem Sie auf den Freigabelink klicken

3) Ich möchte eine Datei (dh popupclose.html) erstellen, um Benutzer zurückzuleiten, wenn sie die Freigabe beendet haben. Diese Datei enthält <script>window.close();</script>das Popup-Fenster

Der einzige Nachteil der Verwendung des Feed-Dialogfelds (neben dem Setup) besteht darin, dass Sie, wenn Sie auch Seiten verwalten, nicht die Möglichkeit haben, über eine Seite zu teilen, sondern nur ein reguläres Benutzerkonto freigeben kann. Und es kann Ihnen einige wirklich kryptische Fehlermeldungen geben, von denen die meisten mit der Einrichtung Ihrer Facebook-App oder Problemen mit dem Inhalt oder der URL zusammenhängen, die Sie teilen.

LocalPCGuy
quelle
2
Gold! Nach dem Testen der unglaublich unzuverlässigen und für Verbindungsfehler anfälligen JSDK-Version ist diese Version viel zuverlässiger und stabiler. Danke vielmals!
Rid Iculous
1
Die Unterstützung für Dialog-Feeds für benutzerdefinierte Parameter endet heute (17. Juli 2017)
mehulmpt
@ LocalPCGuy-Parameter funktionieren nicht, obwohl der Link funktioniert, aber die Bildbeschreibung und der Titel funktionieren nicht. Bitte führen Sie mich
Sanaullah
/ u / Sanaullah das funktioniert nicht mehr, Faceboook hat diese Funktionalität entfernt. Siehe den fett gedruckten Hinweis oben in der Antwort.
LocalPCGuy
15

Mit Sharer.php können Sie keine Anpassungen mehr vornehmen. Die Seite, die Sie freigeben, wird nach OG-Tags durchsucht und diese Daten werden freigegeben.

Verwenden Sie zum korrekten Anpassen FB.UIdas mit dem JS-SDK gelieferte.

Jack Marchetti
quelle
Oder über den Dialog "Teilen" , der genau wie sharer.php nur ein Link sein kann (obwohl die Links mit einer Facebook-App verknüpft werden, die möglicherweise nicht vorzuziehen ist)
fregante
5

Facebook sharer.php Parameter zum Teilen von Beiträgen.

<a href="javascript: void(0);"
   data-layout="button"
   onclick="window.open('https://www.facebook.com/sharer.php?u=MyPageUrl&summary=MySummary&title=MyTitle&description=MyDescription&picture=MyYmageUrl', 'ventanacompartir', 'toolbar=0, status=0, width=650, height=450');"> Share </a>

Verwenden Sie keine Leerzeichen, verwenden Sie &nbsp.

Weider Lima
quelle