it-swarm.com.ru

Идентификация пользователя Facebook Messenger с помощью UserID из входа в Facebook

Я опробую новую платформу Facebook Messenger и столкнулся с небольшой проблемой.

Когда пользователь впервые общается с моим ботом, я хочу использовать sender.id, чтобы найти пользователя в моей БД и проверить, является ли он клиентом или нет, и предложить более специализированный UX.

Пользователь регистрируется в моем сервисе с помощью входа в Facebook, но, к сожалению, похоже, что идентификатор моего приложения в Facebook и идентификатор моего бота в Facebook различаются из-за того, что идентификаторы ограничены областями приложения.

Есть ли способ связать 2 идентификатора, чтобы я мог найти пользователя в моей БД?

UPDATE (20.04.2016): Мы обошли это, попросив пользователей при первом контакте через мессенджер щелкнуть ссылку для входа в свою учетную запись, чтобы мы могли связать их messenger_id с их учетной записью в нашей БД.

Было бы здорово, если бы вместо этого Facebook включал идентификаторы PAGE_SCOPED в конечной точке ids_for_business.

ОБНОВЛЕНИЕ: (01.06.2016): Последнее обновление Facebook включает новую функцию «Связывание аккаунта», которая, по-видимому, решает эту проблему. См. https://developers.facebook.com/docs/messenger-platform/account-linking

31
Richard O'Brien

Последнее обновление Facebook включает новую функцию «Связывание аккаунтов», которая, по-видимому, решает эту проблему. См. https://developers.facebook.com/docs/messenger-platform/account-linking

8
Richard O'Brien

Да. Вы можете получить такие данные, как имя, фамилия, профиль, URL, локаль, часовой пояс, пол из API. Только вы должны передать их идентификатор получателя/идентификатор отправителя и 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

Я решил это по-другому, но он отлично работает с помощью Graph API, я читаю почтовый ящик моей страницы, так что когда кто-то может взаимодействовать с мессенджер-ботом, чем я читаю страницы в папке входящих и перебираю,

Шаг 1:

Выполните HTTP-запрос на получение с помощью Graph API, Вам нужен PAGE_UNIQUE_ID от Graph API, 

ПОЛУЧИТЬ ЗАПРОС 

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 Подсказки:

Перейдите ===> https://developers.facebook.com/tools/Explorer/ ==> Нажмите «Получить токен» ===> Выберите нужную страницу ===> Окончательно отправьте, вы показываете идентификатор на выходе это PAGE_UNIQUE_ID здесь.

Проверьте браузер на повторную реакцию.

Шаг 2:

После выполнения вышеуказанного http-запроса вы получите объект JSON, который покажет последние 10 бесед страниц, на которых указан желаемый идентификатор facebook.

Шаг 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

Это позволяет вам получать все идентификаторы пользователей в пределах приложения для каждой компании.

1
user3268305