我想我在实现 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 ......