php - 如何在注册用户的网站上完全集成 XMPP

标签 php chat xmpp ejabberd

我们有一个社交网站,人们可以在这里联系,我们希望它与 XMPP 集成。我们目前使用 ejabberd XMPP 服务器。

这是我的问题:

  1. 如何正确创建账户?现在,我正在考虑在我们的网络应用程序上进行用户注册,我们将调用一个脚本来执行 ejabberd 命令来创建用户。

  2. 用户身份验证。用户登录我们的网站后,用户将自动登录聊天系统。您如何使用 strophe.js 在客户端执行此操作?据我所知,您需要提供 JID 和密码进行身份验证,所以我认为在登录时,会有一个 ajax 调用来获取用户密码,然后在 strophe.js 的登录调用中使用响应文本。这安全吗?还有其他方法吗?

  3. 出席登记。我们的网络应用程序有一个联系人系统,但 XMPP 有自己的方式通过状态订阅添加联系人,对吧?示例:当 user1 尝试添加 user2 时,在 user1 可以成为 user2 的联系人之前,将向 user2 请求授权。但是由于我们的网络应用程序上已经有一个联系人系统,我们希望绕过 XMPP 的这种授权或抑制它并在 user2 确认 user1 为我们网站上的联系人时使用脚本/命令进行授权.我还不清楚,但一位同事说这在 ejabberd 的模块 mod_admin_extra 上是可能的(一个无需客户端授权即可创建订阅的命令)。是否有可能或者我是否必须使用脚本手动操作 ejabberd 数据库(前提是我从默认的 Mnesia 数据库转移到另一个数据库,比如 MySQL)。

提前致谢。

最佳答案

我们 ( superfeedr ) 有一个类似的网络应用程序,其中 XMPP 是应用程序的一部分。

我们做出的选择是不在 Web 应用程序存储和 XMPP 服务器之间复制用户数据。您可以构建自己的 authentication mechanism将网络应用程序的数据存储与 ejabberd 一起使用,这非常简单。这样,您只有一个地方可以存储用户数据,而不必创建 ejabberd 用户。

通过这样做,您还可以在不知道用户密码甚至以明文形式存储密码的情况下在网络应用程序上登录您的用户 :) 。简单的方法是在服务器上进行 session 身份验证(通过 Bosh)并将 session ID 传递给 HTML 响应,如 described here ,@metajack。

第三部分可能是最棘手的,但实际上我很确定您可以绕过它而不使用内置的“花名册”...但是它可能涉及创建您自己的组件(内部或外部)。

关于php - 如何在注册用户的网站上完全集成 XMPP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801087/

相关文章:

php - 如何获得 Asterisk 通话指标?

php - 使用 facebook graph api 获取 facebook 用户性别

当在 Unix 系统中给出完整的 Web 路径时,PHP move_uploaded_file 不上传图像

javascript - 套接字多次发出事件

ios - 如何在iPhone上的xmpp中获取用户组?

c# - 使用 .Net 控制台应用程序从 Cisco Jabber 调用电话

php - 从 3 个字段中选择,第 0 行唯一 ID,第 1 行多个 ID 号,第 2 行一个字母 int(1) 到新数组中

javascript - 关闭弹出窗口时不会发生任何事件

java - 如何通过Java服务器跨两个网站发送消息

java - 与 Smack 4.2 重新连接后发送离线消息时,经过身份验证的监听器出现异常