Senden Sie private Nachrichten an Freunde

88

Ich muss über Facebook die Benutzerinformationen verbinden und eine private Nachricht an alle seine Freunde senden. Ist es möglich?

yspro
quelle
1
Mir ist klar, dass dies die Frage des OP nicht löst, aber diejenigen, die nach einer Möglichkeit suchen, auf private Nachrichten zu antworten, finden dies möglicherweise nützlich: stackoverflow.com/questions/9598369/…
Trevor

Antworten:

74

Das Senden einer privaten Nachricht über die API ist jetzt möglich.

Dieses Ereignis zum Senden einer Nachricht auslösen (die Initialisierung des Facebook-Objekts sollte vorher erfolgen).

to:user ID von Facebook

function facebook_send_message(to) {
    FB.ui({
        app_id:'xxxxxxxx',
        method: 'send',
        name: "sdfds jj jjjsdj j j ",
        link: 'https://apps.facebook.com/xxxxxxxaxsa',
        to:to,
        description:'sdf sdf sfddsfdd s d  fsf s '

    });
}

Eigenschaften

  • app_id
    Die Kennung Ihrer Anwendung. Erforderlich, wird jedoch von den meisten SDKs automatisch angegeben.

  • redirect_uri
    Die URL, zu der umgeleitet werden soll, nachdem der Benutzer im Dialogfeld auf die Schaltflächen Senden oder Abbrechen geklickt hat. Erforderlich, wird jedoch von den meisten SDKs automatisch angegeben.

  • display
    Der Anzeigemodus, in dem der Dialog gerendert werden soll. Dies wird von den meisten SDKs automatisch angegeben.

  • an
    Eine Benutzer-ID oder ein Benutzername, an den die Nachricht gesendet werden soll. Sobald der Dialog angezeigt wird, kann der Benutzer zusätzliche Benutzer, Facebook-Gruppen und E-Mail-Adressen angeben, an die die Nachricht gesendet werden soll. Wenn Sie Inhalte an eine Facebook-Gruppe senden, werden diese an der Pinnwand der Gruppe veröffentlicht.

  • Link
    (erforderlich) Der Link, der in der Nachricht gesendet werden soll.

  • Bild
    Standardmäßig wird ein Bild über den angegebenen Link aufgenommen. Die URL eines Bildes, das in die Nachricht aufgenommen werden soll. Das Bild wird neben dem Link angezeigt.

  • name Standardmäßig wird ein Titel von dem angegebenen Link übernommen. Der Name des Links, dh der anzuzeigende Text, auf den der Benutzer klicken wird.

  • Beschreibung
    Standardmäßig wird eine Beschreibung von dem angegebenen Link übernommen. Beschreibender Text, der unter dem Link angezeigt wird.

Sehen Sie hier mehr

@VishwaKumar:

Zum Senden von Nachrichten mit benutzerdefiniertem Text müssen Sie den Parameter 'message' hinzufügen FB.ui, aber ich denke, diese Funktion ist veraltet. Sie können die Nachricht nicht mehr vorab ausfüllen. Aber versuchen Sie es einmal.

FB.ui({
  method: 'send',
  to: '1234',
  message: 'A request especially for one person.',
  data: 'tracking information for the user'
});

Siehe diesen Link: http://fbdevwiki.com/wiki/FB.ui

Somnath Muluk
quelle
3
Diese Lösung gibt es schon eine Weile. Das Problem wird dadurch nicht vollständig gelöst, da Sie das Popup von Facebook verwenden müssen und nur eine einzelne Person bevölkern können (an dieser Stelle können Sie den Fehler hier nachverfolgen ). Mit einer vollständigen Lösung können Sie die Standard-API verwenden, um eine Nachricht zu senden, wie Sie möchten, obwohl Facebook dies möglicherweise endgültig beseitigt hat.
Scott
2
@ Somnath, danke für die Veröffentlichung der Lösung! Wissen Sie, ob es eine Möglichkeit gibt, das Fenster zum Schreiben von Nachrichten zu umgehen und die Nachricht direkt zu senden?
CyberJunkie
2
@CyberJunkie: Ich denke, Facebook bietet keine solche Umgehungsfunktion. Der Benutzer muss auf die Schaltfläche "Nachricht senden" klicken. Andernfalls ist Ihr Posteingang voller Werbung.
Somnath Muluk
@ Somnath: Ich habe Ihre Lösung ausprobiert und sie funktioniert. Aber gibt es eine Möglichkeit, die Nachricht im Popup mit benutzerdefinierten Nachrichten zu füllen?
VishwaKumar
@VishwaKumar: Meinst du, das Nachrichtenfeld sollte beim Öffnen mit benutzerdefinierten Nachrichten gefüllt werden?
Somnath Muluk
9

Nein, das ist nicht möglich. Damit Sie Nachrichten jeglicher Art an einen Facebook-Benutzer senden können, benötigen Sie die Erlaubnis dieses Benutzers.

Wenn sich jemand mit Facebook Connect auf Ihrer Website anmeldet, erklärt er sich ausdrücklich damit einverstanden, seine Facebook-Daten mit Ihrer Website zu teilen. Anschließend können Sie dieser Person eine Nachricht über die normalen Kanäle senden . Sie könnten auch ihre Freundesliste abrufen. Sie können jedoch keine Nachrichten an die Freunde senden.

Zombat
quelle
Mein Google-Fu versagt mir. Haben Sie Links dazu?
Randell
9

Dies ist derzeit nicht möglich, aber es gibt eine Problemumgehung. Sie können mit dem Benutzer im öffentlichen Bereich in Kontakt treten und ihn bitten, Ihnen private Nachrichten zu senden. Sie können jedoch keine privaten Nachrichten zurücksenden, sondern nur öffentliche. Dies hängt natürlich alles davon ab, ob der Benutzer Ihnen die richtigen Berechtigungen erteilt.

Wenn Sie die Berechtigung zum Zugriff auf die Freunde einer Person erteilt haben, können Sie theoretisch auf dieser Benutzerwand Verweise auf jeden einzelnen Freund veröffentlichen und ihn bitten, öffentlich mit Ihnen zu interagieren und Sie dann möglicherweise privat zu benachrichtigen.

Freunde finden

#if authenticated
https://graph.facebook.com/me/friends
http://developers.facebook.com/docs/reference/api/user/

Post in der Public Domain

http://developers.facebook.com/docs/reference/api/status/

Nachrichten an diesen Benutzer senden lassen (sofern eine Berechtigung erteilt wurde)

http://developers.facebook.com/docs/reference/api/message/
JiminyCricket
quelle
: Jetzt können wir jetzt eine private Nachricht senden. Ich habe eine Antwort gegeben.
Somnath Muluk
8

Sie können die Facebook-Chat-API verwenden, um private Nachrichten zu senden. Hier ist ein Beispiel in Ruby mit xmpp4r_facebookgem:

sender_chat_id = "-#{sender_uid}@chat.facebook.com"
receiver_chat_id = "-#{receiver_uid}@chat.facebook.com"
message_body = "message body"
message_subject = "message subject"

jabber_message = Jabber::Message.new(receiver_chat_id, message_body)
jabber_message.subject = message_subject

client = Jabber::Client.new(Jabber::JID.new(sender_chat_id))
client.connect
client.auth_sasl(Jabber::SASL::XFacebookPlatform.new(client,
   ENV.fetch('FACEBOOK_APP_ID'), facebook_auth.token,
   ENV.fetch('FACEBOOK_APP_SECRET')), nil)
client.send(jabber_message)
client.close
Dalibor Nasevic
quelle
der Blog-Beitrag darüber - dalibornasevic.com/posts/…
Dmitry Khryukin
Haben Sie den ähnlichen Code in PHP, um private Nachrichten zu senden?
Snehal S
3
Dies ist seit v2.0 nach dem 1. Mai 2015
Daniel Cukier
7

Eine Problemumgehung ist die Verwendung der neuen E-Mail-Adresse @ facebook.com. Dies hat einige Nachteile:

1) Nicht jeder (zum Zeitpunkt dieser Veröffentlichung) hat die neue Nachrichtenanwendung in seinem Konto aktiviert.

2) Nicht jeder hat seine @ facebook.com-E-Mail in seiner Nachrichten-App eingerichtet.

3) Nicht jeder wählt seinen Benutzernamen (wenn er überhaupt einen Facebook-Benutzernamen hat) als E-Mail-Adresse.

Scott
quelle
6

Du kannst nicht. Die Facebook-API verfügt über read_mailbox, jedoch keine erweiterte Berechtigung write_mailbox. Ich vermute, dies geschieht, um zu verhindern, dass Spam-Apps die Posteingänge von Freunden überfluten.

Anurag
quelle
2

Für mobile Anwendungen habe ich eine Lösung gefunden, indem ich Javascript in die Dialogansicht eingefügt habe. In meiner iOS-App befindet sich eine versteckte Webansicht. Das lade die fb message send dialog api .. dann füge ich etwas Javascript ein, um die Felder "to" und "message" zu setzen und das Formular zu senden .. Damit der Endbenutzer nichts tun muss. Nachricht still an Facebook-Posteingang gesendet ...

apueee
quelle
Kannst du mehr darüber erklären?
Totty.js
@Totty kannst du deine Erkenntnis zeigen? Ich brauche es sehr für meine iOS-App.
Alex
0

Es gibt keine Grafik-API dafür, Sie müssen Facebook xmpp Chat-API verwenden, um die Nachricht zu senden. Eine gute Nachricht ist: Ich habe eine PHP-Klasse erstellt, die zu einfach zu verwenden ist. Rufen Sie eine Funktion auf und die Nachricht wird gesendet Open Source, check it out: Facebook-Nachricht api php die Beschreibung sagt, es ist eine Closed Source, aber die wurde später Open Source gemacht, siehe den ersten Kommentar, können Sie von Github klonen. Es ist jetzt eine Open Source.

Nishchal Gautam
quelle