Gtalk OAuth 令牌连接到 Gtalk 服务

Posted

技术标签:

【中文标题】Gtalk OAuth 令牌连接到 Gtalk 服务【英文标题】:Gtalk OAuth token to connect to Gtalk service 【发布时间】:2012-11-04 23:51:47 【问题描述】:

我正在实现一个 xmpp 客户端(目前仅用于 gtalk)。

我首先按照OAuth 2.0 Authorization 中的说明获取 OAuth2 令牌。一旦获得令牌,我也在寻求有关如何连接到 gtalk 服务器的帮助。我已通读 the example ,但不确定如何在 GAE 上实现 SASL 身份验证。

接下来,如何让它像聊天客户端一样工作,让真实用户可以聊天。我见过examples 使用它我可以制作聊天机器人,还有其他examples 需要用户输入他们的用户名和密码才能聊天。

但我的想法是对我的 GAE 应用程序使用 Google 的身份验证,然后让我的应用程序像真正的 gtalk 用户的聊天客户端一样运行。 请指出如何实现这一目标的正确方向。

【问题讨论】:

【参考方案1】:

我想我在实现 gtalk XMPP 客户端时遇到了与您类似的障碍。检索访问令牌一切顺利,但接下来我进入这部分:

(取自https://developers.google.com/talk/jep_extensions/oauth):

<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" 
    mechanism="X-OAUTH2"
    auth:service="oauth2"
    xmlns:auth="http://www.google.com/talk/protocol/auth">  
  base64("\0" + user_name + "\0" + oauth_token)
</auth>

它要求用户名。 这是您遇到的问题吗?就我个人而言,此时我遇到了障碍,因为显然因为它是 OAuth,所以程序不知道用户名。我不确定google对此的建议是什么,我找不到任何信息。

无论如何,假设您可以正确地通过 XMPP 服务器的身份验证,它的行为应该与任何其他 XMPP 服务器一样。

我发现的关于 gtalk XMPP 实现的一些事情可能会对您或其他人有所帮助:

要连接的服务器可以是 talk.google.com 或 xmpp.google.com &lt;stream:stream&gt; 元素的“to”属性似乎需要是“gmail.com”而不是服务器地址 服务器使用的证书需要验证为来自“gmail.com”而不是服务器地址(启动 TLS 时) 此页面可能会有所帮助:https://developers.google.com/cloud-print/docs/rawxmpp(一切都到第 2 步)

在不知道您在编写什么代码的情况下,很难直接回答您的问题。如果您像我一样,并且正在从头开始实施 XMPP 客户端,我只能祝您好运(这将是一段漫长的旅程)。但是,如果您使用 XMPP 框架来减轻负担,那么它们中的大多数应该有内置的东西来处理 gtalk...

【讨论】:

查看***.com/questions/14315877/… 解决用户名问题。

以上是关于Gtalk OAuth 令牌连接到 Gtalk 服务的主要内容,如果未能解决你的问题,请参考以下文章

如何连接到 gtalk 以外的 xmpp 服务器?

Apache Camel - 连接到 Gtalk

使用 Smack 4.1 连接到 Gtalk

如何在java中连接到gtalk?

使用谷歌访问令牌进行 Xmpp gtalk 身份验证

无法使用 node.js 和 node-xmpp 连接到 GTalk