使用Facebook登录中的UserID识别Facebook Messenger用户

时间:2016-04-13 12:27:24

标签: facebook facebook-graph-api facebook-login facebook-messenger

我正在试用新的Facebook Messenger平台并遇到了一些问题。

当用户首次与我的Bot聊天时,我想使用sender.id在我的数据库中查找用户,并验证他们是否是客户,并提供更加量身定制的用户体验。

用户使用Facebook登录注册我的服务,但不幸的是,它出现在我的App的Facebook ID&由于ID仅限于App-scope,我的Bot的Facebook ID不同。

是否有任何关联2个ID的方式允许我在我的数据库中找到用户?

更新(2016年4月2日): 我们通过询问用户首次通过信使联系点击链接登录他们的帐户来解决这个问题,这样我们就可以将他们的messenger_id与他们在我们数据库中的帐户相关联。

如果facebook在ids_for_business端点中包含PAGE_SCOPED ID,那会很棒。

更新:(2016年6月1日): Facebook的最新更新包括一个新的"帐户链接"似乎可以解决此问题的功能。见https://developers.facebook.com/docs/messenger-platform/account-linking

5 个答案:

答案 0 :(得分:8)

Facebook的最新更新包括一个新的“帐户链接”功能,似乎可以解决这个问题。见https://developers.facebook.com/docs/messenger-platform/account-linking

答案 1 :(得分:3)

不幸的是,目前无法做到这一点。要求他们登录新线程是链接帐户的最佳方式。

答案 2 :(得分:3)

是。您可以从api获取名字,姓氏,个人资料图片网址,区域设置,时区,性别等详细信息。只有你必须通过的是他们的信使机器人的收件人ID /发件人ID和acccess_token。

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

答案 3 :(得分:2)

我用不同的方式解决了它,但它完全通过图形API工作,我读取了我的页面的邮箱,这样当任何人可以通过messenger机器人进行交互而不是我读取页面收件箱并迭代,

  

第1步:

通过图形API执行HTTP get请求, 你想要一个来自Graph API的PAGE_UNIQUE_ID,

获取请求

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提示:

去===&gt; https://developers.facebook.com/tools/explorer/ ==&gt;按“获取令牌”===&gt;选择您想要的页面===&gt;最后提交,您在输出中显示一个id为PAGE_UNIQUE_ID的ID。

检查浏览器是否有resoponse。

  

第2步:

执行上述http请求后,您将获得一个JSON对象,该对象将显示包含所需facebook ID的页面的最新10个对话。

  

第3步:

按用户全名迭代,或者您可以根据自己的选择使用lodash或下划线,

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

希望它会对你有所帮助。

答案 4 :(得分:1)

这可能是你想要的:https://developers.facebook.com/docs/apps/for-business

它允许您按业务获取所有应用程序范围的用户ID。