Как использовать токен OAuth для подключения к ejabberd в Stophe.js?

Я пытаюсь подключиться к серверу ejabberd из strophe.js. Я включил OAuth в ejabberd, благодаря чему я могу успешно получить токен OAuth для пользователя после его аутентификации. Рабочий процесс выглядит примерно так: -

  1. Когда пользователь регистрируется в моем веб-приложении, я создаю учетную запись ejabberd для пользователя с теми же учетными данными.
  2. Пользователь входит в мое веб-приложение
  3. При успешном входе я регистрирую пользователя в ejabberd с помощью механизма OAuth.
  4. Токен OAuth передается клиенту
  5. Теперь клиент, использующий strophe.js, устанавливает соединение с ejabberd для выполнения всех других операций, таких как получение списка участников, отправка сведений о присутствии, отправка сообщений и т. д.

Я столкнулся с проблемой на шаге 4, так как не могу найти подходящий способ отправки токена OAuth в ejabberd при подключении. Кстати, я новичок в strophe.js. Все примеры использования в Интернете, имя пользователя и пароль. Я не хочу снова спрашивать пользователя о пароле, и я не хочу жестко кодировать в файле.

Заранее спасибо.


person Mangu Singh Rajpurohit    schedule 17.06.2017    source источник


Ответы (1)


Вы можете использовать токен OAuth для подключения к серверу ejabberd из strophe.

  1. Токен OAuth, созданный из API, должен иметь область действия sasl_auth
  2. При создании механизмов передачи экземпляра strophe как [Strophe.SASLXOAuth2]
  3. При подключении замените пароль своим токеном oauth, например. connection.connect(jid, ejabberd_oauth_token)
person Anish Lushte    schedule 11.12.2019
comment
Я использую strophe.js и openfire. возможно ли установить соединение с токеном?. мой текущий код: this.xmppConnection = new Strophe.Connection(this.connectionString, {keepalive: true, protocol: 'wss'}); this.xmppConnection.connect(userJID, userPass, this.onXmppServerConnect); - person Sahal; 02.01.2020
comment
Привет, вам нужно передать механизм по умолчанию для подключения к Strophe. this.xmppConnection = new Strophe.Connection(this.connectionString, { keepalive: true, протокол: 'wss', механизмы: [Strophe.SASLXOAuth2] }); - person Anish Lushte; 14.01.2020
comment
Привет, Аниш, я использую тип npm strophe.js. и он говорит, что Strophe.SASLXOAuth2 не существует - person Sahal; 14.01.2020
comment
Надеюсь, вы используете (github.com/strophe/strophejs) пакет strophe. Вы можете найти это определение по адресу [github.com/strophe/ strophejs/blob/ - person Anish Lushte; 17.01.2020