Google chrome XMPP类似Google的同步服务器通知解决方案

Google chrome XMPP类似Google的同步服务器通知解决方案,google-chrome,authentication,xmpp,server-side,Google Chrome,Authentication,Xmpp,Server Side,我正在寻找一种简单的方法来实现使用以下协议运行的XMPP服务器: 唯一的区别是我必须使用X-GOOGLE-TOKEN身份验证机制: 这个过程很简单:我从客户机发送的数据中获取令牌,基于该令牌请求用户数据,并相应地设置JID,在生成的JID中添加一些随机字符 之后,其他具有可能不同令牌但具有相同用户帐户的客户端连接到XMPP资源,对于订阅的客户端,将启用推送通知广播 可以从当前可用的实现中借用多少服务器代码?我会避免自己编写所有服务器代码,尽管逻辑相当简单。我知道有ejabberd和prosod

我正在寻找一种简单的方法来实现使用以下协议运行的XMPP服务器:

唯一的区别是我必须使用X-GOOGLE-TOKEN身份验证机制:

这个过程很简单:我从客户机发送的数据中获取令牌,基于该令牌请求用户数据,并相应地设置JID,在生成的JID中添加一些随机字符

之后,其他具有可能不同令牌但具有相同用户帐户的客户端连接到XMPP资源,对于订阅的客户端,将启用推送通知广播


可以从当前可用的实现中借用多少服务器代码?我会避免自己编写所有服务器代码,尽管逻辑相当简单。我知道有ejabberd和prosody xmpp服务器实现了很多XEP。哪一个更容易添加自定义处理机制?你能为核心xmpp服务器推荐其他稳定的替代方案吗?

谷歌设计的
X-OAUTH2
非常简单,易于实现。实际上,
PLAIN
X-OAUTH2
机制的工作方式没有区别。您只需选择一个标准的
PLAIN
实现,就可以让它在google
X-OAUTH2
身份验证机制中工作,而无需付出额外的努力

我是库中
X-OAUTH2
的作者,并且我支持该库。您可以看到我为支持这一点而编写的确切代码行。唯一相关的代码是:

switch($mechanism) {
    case 'PLAIN':
    case 'X-OAUTH2':
        $stanza->t(base64_encode("\x00".$user."\x00".$pass));
        break;
对于
X-OAUTH2
实现
$pass
只不过是您的oauth令牌。简而言之,来自
PLAIN
auth机制的密码字段成为
X-OAUTH2
机制的oauth令牌。其余的都是一样的