web-dev-qa-db-ja.com

FacebookログインからUserIDを使用してFacebook Messengerユーザーを識別する

新しいFacebook Messenger Platformを試していますが、ちょっとした問題にぶつかりました。

ユーザーが最初にボットとチャットするとき、sender.idを使用してDB内のユーザーを検索し、顧客であるかどうかを確認し、よりカスタマイズされたUXを提供します。

ユーザーはFacebookログインを使用して私のサービスにサインアップしますが、残念ながら、アプリのFacebook IDとボットのFacebook IDはAppスコープに限定されているため異なるようです。

2つのIDを関連付けて、DBでユーザーを見つける方法はありますか?

UPDATE(4/20/2016):この問題を回避するには、メッセンジャーを介した最初の連絡先のユーザーにリンクをクリックしてアカウントにログインするように依頼し、 messenger_idをDBのアカウントに関連付けることができます。

代わりにfacebookがids_for_businessエンドポイントにPAGE_SCOPED IDを含んでいると素晴らしいでしょう。

更新:(6/1/2016):Facebookの最新の更新には、この問題を解決するように見える新しい「アカウントリンク」機能が含まれています。 https://developers.facebook.com/docs/messenger-platform/account-linking を参照してください

32
Richard O'Brien

Facebookの最新アップデートには、この問題を解決すると思われる新しい「アカウントリンク」機能が含まれています。 https://developers.facebook.com/docs/messenger-platform/account-linking を参照してください

8
Richard O'Brien

はい。 APIから名、姓、プロフィール写真のURL、ロケール、タイムゾーン、性別などの詳細を取得できます。渡す必要があるのは、メッセンジャーボットの受信者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
Gijo Varghese

残念ながら、現在それを行う方法はありません。アカウントをリンクするには、新しいスレッドにログインするように依頼するのが最善の方法です。

3
pschang

私はそれを別の方法で解決しましたが、グラフAPIによって完璧に動作します、私は私のページのメールボックスを読み取りますので、誰かがメッセンジャーボットによって対話できるとき、私はページの受信トレイを読んで繰り返します、

ステップ1:

グラフAPIによるHTTP getリクエストを実行します。グラフ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ヒント:

Go ===> https://developers.facebook.com/tools/Explorer/ ==>「トークンを取得」を押します===>目的のページを選択===>最後に送信、ここにPAGE_UNIQUE_IDである出力のIDを表示します。

ブラウザで応答を確認してください。

ステップ2:

上記のhttpリクエストを実行した後、目的のFacebook IDが含まれるページの最新の10の会話を表示するJSONオブジェクトを取得します。

ステップ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;     
        } 
      }
    }
  }
}

それがあなたを助けることを願っています。

2
Zahid Rahman

これはおそらくあなたが望むものです: https://developers.facebook.com/docs/apps/for-business

これにより、アプリ単位のすべてのユーザーIDをビジネスごとに取得できます。

1
user3268305