【问题标题】:How to use OAuth token to connect with ejabberd in Stophe.js?如何使用 OAuth 令牌与 Stophe.js 中的 ejabberd 连接?
【发布时间】:2017-11-19 21:15:42
【问题描述】:

我正在尝试从 strophe.js 连接到 ejabberd 服务器。我已经在 ejabberd 中启用了 OAuth,因此一旦用户通过身份验证,我就可以为用户成功获取 OAuth 令牌。工作流程类似于上面:-

  1. 当用户注册我的网络应用程序时,我为用户创建 ejabberd 帐户,使用相同的凭据。
  2. 用户登录我的网络应用
  3. 成功登录后,我在 OAuth 机制的帮助下将用户登录到 ejabberd。
  4. OAuth 令牌传递给客户端
  5. 现在使用 strophe.js 的客户端与 ejabberd 建立连接以执行所有其他操作,例如获取花名册列表、发送出席信息、发送消息等。

我在第 4 步中遇到问题,因为在建立连接时我无法找到合适的方式将 OAuth 令牌发送到 ejabberd。顺便说一句,我是 strophe.js 的新手。互联网上的所有示例都使用用户名和密码。我不想再次向用户询问密码,也不想在文件中硬编码。

提前致谢。

【问题讨论】:

    标签: javascript oauth ejabberd ejabberd-api strophe.js


    【解决方案1】:

    您可以使用 OAuth 令牌从 strophe 连接 ejabberd 服务器。

    1. 从 api 生成的 OAuth 令牌必须具有范围 sasl_auth
    2. 在创建 strophe 实例传递选项机制时作为[Strophe.SASLXOAuth2]
    3. 连接时用您的 oauth 令牌替换密码 例如。 connection.connect(jid, ejabberd_oauth_token)

    【讨论】:

    • 我正在使用 strophe.js 和 openfire 。是否可以与令牌建立联系?我当前的代码是:this.xmppConnection = new Strophe.Connection(this.connectionString, { keepalive: true, protocol: 'wss' }); this.xmppConnection.connect(userJID, userPass, this.onXmppServerConnect);
    • 您好,您需要通过默认机制连接到 Strophe。 this.xmppConnection = new Strophe.Connection(this.connectionString, { keepalive: true, protocol: 'wss', 机制: [Strophe.SASLXOAuth2] });
    • 嗨 Anish,我正在使用 strophe.js npm 类型。它是说 Strophe.SASLXOAuth2 不存在
    • 我希望你使用的是 (github.com/strophe/strophejs) strophe 包。您可以在 [github.com/strophe/strophejs/blob/… 找到此定义
    猜你喜欢
    • 2020-10-11
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2021-11-13
    • 2021-11-06
    相关资源
    最近更新 更多