29

Ich probiere die neue Facebook Messenger Plattform aus und habe ein kleines Problem.Facebook Messenger User mit UserID von einem Facebook Login identifizieren

Wenn ein Benutzer zum ersten Mal mit meinem Bot chattet, möchte ich die sender.id verwenden, um den Benutzer in meiner DB nachzuschlagen und zu überprüfen, ob es sich um einen Kunden handelt oder nicht, und eine besser zugeschnittene UX anbieten.

Benutzer melden sich bei meinem Dienst mit Facebook Login, aber leider scheint die Facebook-ID meiner App & die Facebook-ID meines Bot sind unterschiedlich, da IDs auf App-Bereiche beschränkt sind.

Gibt es eine Möglichkeit, die 2 IDs zuzuordnen, damit ich einen Benutzer in meiner DB finden kann?

UPDATE (2016.04.20): Wir haben um diese von den Benutzern beim ersten Kontakt über Messenger fragen Sie einen Link zu klicken, um ihr Konto einloggen und so konnten wir ihre messenger_id mit ihrem Konto in unserer DB assoziieren .

Wäre toll, wenn Facebook stattdessen PAGE_SCOPED IDs im ids_for_business Endpunkt enthalten würde.

UPDATE: (2016.06.01): Facebook neuestes Update enthält ein neues „Konto verknüpfen“ Funktionalität, die dieses Problem zu lösen scheint. Siehe https://developers.facebook.com/docs/messenger-platform/account-linking

+2

Die beste Lösung, die mir einfällt, ist das Profilbild zu überprüfen. Es ist nicht garantiert, dass der Benutzer nicht ändert, aber es kann Ihnen einige korrekte geben. – niry

+0

@Richard O'Brien eine Frage: Wie gehen Sie mit neuen Benutzern um? Richtig, ich habe das Problem, dass ich FB Messenger-Benutzern erlauben möchte, sich in einem iFrame für meinen Dienst anzumelden, aber es scheint, dass FB Login SDK nicht in den Facebook-iFrames des Messenger funktioniert. – BausTheBig

Antwort

7

Das neueste Update von Facebook enthält eine neue Funktion zur Kontoverknüpfung, die dieses Problem scheinbar löst. Siehe https://developers.facebook.com/docs/messenger-platform/account-linking

+1

Links zu externen Ressourcen werden ermutigt, aber bitte fügen Sie Kontext um den Link, damit Ihre Mitbenutzer eine Idee haben, was es ist und warum es ist da. Zitiere immer den relevantesten Teil eines wichtigen Links, falls die Zielseite nicht erreichbar ist oder permanent offline geschaltet wird. Von [Wie zu antworten] (http://stackoverflow.com/help/how-to-answer). –

1

Dies ist wahrscheinlich das, was Sie wollen: https://developers.facebook.com/docs/apps/for-business

Es Sie können alle der App-scoped Benutzer-IDs auf einer Pro-Business-Basis erhalten.

+0

Danke. Ich wusste nicht, dass es existiert ... sieht aus wie es funktionieren könnte. Ich werde es versuchen. –

+1

Leider sieht das nicht so aus. Messenger wird nicht in der Liste als separate App angezeigt. :( Ich denke, ich muss den Benutzer auf einen Link klicken und mit Facebook einloggen, die Messenger-ID in der Querystring übergeben und dann FB-ID und Messenger-ID nach der Anmeldung in meinem Rückruf zuordnen. –

+0

Sind beide Ihrer Apps im Besitz von der gleichen Firma auf der Facebook-Website? – user3268305

3

Leider gibt es derzeit keine Möglichkeit, dies zu tun. Sie zu bitten, sich für neue Threads anzumelden, ist die beste Möglichkeit, Konten zu verknüpfen.

2

Ja. Sie können Details wie Vorname, Nachname, Profilbild URL, Gebietsschema, Zeitzone, Geschlecht von einer API erhalten. Nur müssen Sie ihre Empfänger-ID/Absender-ID und acccess_token Ihres Messenger-Bot übergeben.

https://graph.facebook.com/v2.6/USER_ID?fields=first_name,last_name,profile_pic,locale,timezone,gender&access_token=TOKEN 
1

ich es anders gelöst, aber es funktioniert perfekt durch Graph API, i Mailbox meiner Seite lesen, so dass, wenn einer von messenger-Bot in Wechselwirkung treten können, als ich lesen Seiten Posteingang und durch iterieren,

Schritt 1:

eine HTTP-Do Antrag graph API erhalten, Sie eine PAGE_UNIQUE_ID von graph API wollen,

GET-Anfrage

https://graph.facebook.com/v2.6/<PAGE_UNIQUE_ID>?fields=conversations.limit(10){participants,updated_time,id}&access_token=<PAGE_ACCESS_TOKEN> 

PAGE_UNIQUE_ID Hinweise:

Go ===>https://developers.facebook.com/tools/explorer/ ==> Presse "Get Token" ===> Wählen Sie die gewünschte Seite ===> Schließlich einreichen, zeigen Sie eine ID auf Ausgabe, die PAGE_UNIQUE_ID hier ist.

Überprüfen Sie im Browser für resoponse.

Schritt 2:

Nach oben http-Anforderung zu tun, können Sie ein JSON-Objekt erhalten, die spätestens 10 Gespräch von Seiten, auf denen gewünschte Facebook-ID enthalten zeigen.

Schritt 3:

Sie Iteration durch vom Benutzer vollständigen Namen oder Sie können lodash verwenden oder bei Ihrer Wahl zu unterstreichen,

getUserID(response,'Zahid Rahman') 


function getUserID(response, fullname) { 
    if (response && response.conversations && response.conversations.data) { //Check response is correct 
    var conversations = response.conversations.data;      //Get all conversations 
    for (var j = 0; j < conversations.length; j++) { 
     var conversationsParticipants = conversations[j].participants.data; 
     for (var k = 0; k < conversationsParticipants.length; k++) {   //Get all particiapnts of a single conversation. 

     var conversationsParticipantsEach = conversationsParticipants[k]; 
     if (conversationsParticipantsEach.name === fullname) {    //Check fullname match or not 
      console.log("Desired Facebook User ID : " + conversationsParticipants[k].id); 
      return conversationsParticipants[k].id;  
     } 
     } 
    } 
    } 
} 

Hoffe, es wird Ihnen helfen.

+0

Dies erforderte die Berechtigung "read_mailbox", die nicht leicht zu bekommen zu sein scheint: "Diese Berechtigung wird Apps gewährt, die einen Facebook-Markenkunden auf Plattformen erstellen, auf denen Facebook noch nicht verfügbar ist. Zum Beispiel Android- und iOS-Apps nicht für diese Berechtigung genehmigt werden. Außerdem erhalten Web-, Desktop-, In-Car- und TV-Apps diese Berechtigung nicht. " – j0k