web-dev-qa-db-fra.com

Identifier l'utilisateur Facebook Messenger avec l'ID utilisateur à partir d'une connexion Facebook

J'essaie la nouvelle plate-forme Facebook Messenger et j'ai un problème.

Lorsqu'un utilisateur discute pour la première fois avec mon bot, je souhaite utiliser le sender.id pour rechercher l'utilisateur dans ma base de données et vérifier s'il est un client ou non, et proposer un UX plus personnalisé.

L'utilisateur s'inscrit à mon service à l'aide de Facebook Login, mais malheureusement, il apparaît que les identifiants Facebook de mon application et de mon bot sont différents car les identifiants sont limités aux applets d'application.

Est-il possible d'associer les 2 ID pour me permettre de trouver un utilisateur dans ma base de données?

UPDATE (20/04/2016): Nous avons résolu ce problème en demandant aux utilisateurs de premier contact via Messenger de cliquer sur un lien pour se connecter à leur compte afin d'associer leur messenger_id à leur compte dans notre base de données.

Ce serait génial si Facebook incluait à la place des identifiants PAGE_SCOPED dans le noeud final ids_for_business.

MISE À JOUR: (01/06/2016): La dernière mise à jour de Facebook inclut une nouvelle fonctionnalité "Création de lien vers un compte" qui semble résoudre ce problème. Voir https://developers.facebook.com/docs/messenger-platform/account-linking

31
Richard O'Brien

La dernière mise à jour de Facebook comprend une nouvelle fonctionnalité «Création de lien vers un compte» qui semble résoudre ce problème. Voir https://developers.facebook.com/docs/messenger-platform/account-linking

8
Richard O'Brien

Oui. Vous pouvez obtenir des informations telles que le prénom, le nom, l'URL de l'image de profil, les paramètres régionaux, le fuseau horaire, le sexe d'une API. Seuls vous devez indiquer son identifiant de destinataire/identifiant d'expéditeur et acccess_token de votre bot messenger.

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

Malheureusement, il n'y a aucun moyen de le faire pour le moment. Leur demander de se connecter à de nouvelles discussions est le meilleur moyen de lier des comptes.

3
pschang

Je l'ai résolu différemment, mais cela fonctionne parfaitement avec l'API graphique, je lis la boîte aux lettres de ma page de sorte que, lorsque quelqu'un peut interagir par messagerie instantanée, je lis les pages de la boîte de réception et je parcoure,

Étape 1:

Faites une requête de requête HTTP par l'API graphique Vous voulez un PAGE_UNIQUE_ID de l'API graphique, 

OBTENIR LA DEMANDE 

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 Conseils:

Allez ===> https://developers.facebook.com/tools/Explorer/ ==> Appuyez sur "Obtenir un jeton" ===> Sélectionnez la page de votre choix ===> Soumettez-le enfin, vous affichez un ID sur la sortie qui est PAGE_UNIQUE_ID ici.

Vérifiez sur le navigateur pour resoponse.

Étape 2:

Après avoir effectué la requête http ci-dessus, vous obtenez un objet JSON qui montrera les 10 dernières conversations des pages où l'identifiant facebook souhaité est inclus.

Étape 3:

Faites une itération par nom d'utilisateur complet ou vous pouvez utiliser lodash ou un soulignement à votre choix,

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;     
        } 
      }
    }
  }
}

J'espère que cela vous aidera.

2
Zahid Rahman

C’est probablement ce que vous voulez: https://developers.facebook.com/docs/apps/for-business

Il vous permet d’obtenir tous les identifiants d’utilisateurs d’application par entreprise.

1
user3268305