Есть 4 простых шага, описанных в документация о привязке аккаунта для мессенджера:
Зарегистрируйте URL обратного вызова с помощью кнопки входа.
Messenger Platform вызывает зарегистрированный URL-адрес, когда пользователь запускает процесс привязки учетной записи. Параметры redirect_uri и account_linking_token добавляются к вашему зарегистрированному обратному вызову.
После завершения привязки перенаправьте пользователей в местоположение, указанное в redirect_uri, и добавьте параметр authorization_code (определенный вами) для подтверждения привязки.
При желании можно получить идентификатор области страницы пользователя (PSID), используя конечную точку привязки учетной записи. Этот шаг следует использовать только в особых случаях, когда вам нужен PSID пользователя как часть процесса связывания.
Этими шагами очень легко следовать, за исключением того, что нет никакой помощи в том, как на самом деле связать учетную запись, я получаю redirect_uri и account_linking_token в качестве параметров на моем веб-сайте обратного вызова, где я ввожу логин и пароль учетной записи.
А потом я связываю аккаунты …? Как именно?
Какая польза от этой кнопки? Я знаю, что предполагается связывать аккаунты, но для чего мне нужен account_linking_token? Я уже могу отправить обычной кнопкой web_url пользователя psid, я могу легко отправить его на своей кнопке входа в систему в качестве параметра и связать учетную запись с этим psid, если учетные данные верны.
Я твердо верю, что я что-то упускаю или чего-то не понимаю, но я не знаю что. Я выполнил шаги, названные конечной точкой, связывающей учетную запись, чтобы получить PSID, который у меня уже был, поскольку именно так я отправляю сообщения с моим ботом, но я не вижу смысла в этой кнопке.
Итак, что мне не хватает? Я так расстроен.
Только что прошел через подобный кусочек головы, поэтому объясню, что я сделал, пока он свеж в моей голове.
В моем примере я хотел, чтобы Facebook перенаправил на мою главную страницу входа, которая является реализацией open id connect. Клиент подписывается на это, и я получаю id_token и access_token оттуда. После получения access_token я извлекаю претензию sub из JWT, которая является уникальным идентификатором клиента в нашей базе данных.
Затем я перенаправляю обратно к значению, которое было отправлено мне в redirect_uri, и добавляю authorization_code = {требование-значения-к-под-заявки}
Затем запускается веб-крючок «ссылка на учетную запись», в котором будет публиковаться код моей службы, содержащий PSID пользователя Facebook и код авторизации, который является моим уникальным идентификатором клиента в моей бизнес-базе данных.
Теперь у вас есть 2 бита необходимой информации, уникальный идентификатор Facebook и ваш уникальный идентификатор клиента в сообщении Post. Это ваш бизнес-код, чтобы сохранить эту информацию в каком-то хранилище на данный момент
При последующих публикациях сообщений в конечную точку бота у вас всегда есть отправитель (PSID) в сообщении. Ваш код теперь может искать соответствующий идентификатор, специфичный для вашей компании, и выполнять операции, соответствующие этому идентификатору.
Там, где происходит связывание — это в вашем коде, вам нужно обработать сообщение от ссылки на аккаунт и сохранить данные для дальнейшего использования.
Других решений пока нет …