1

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

我从获取 OAuth2 令牌开始,如OAuth 2.0 Authorization中所述。一旦获得令牌,我也在寻求有关如何连接到 gtalk 服务器的帮助。我已经阅读了示例,但不确定如何在 GAE 上实现 SASL 身份验证。

接下来,如何让它像聊天客户端一样工作,让真实用户可以聊天。我已经看到了可以制作聊天机器人的示例,以及其他需要用户输入用户名和密码才能聊天的示例。

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

4

1 回答 1

0

我想我在实现 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,所以程序不知道用户名。我不确定谷歌对此的建议是什么,我无法找到任何信息。

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

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

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

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

于 2013-01-13T15:04:46.400 回答