Gtalk OAuth令牌连接到Gtalk服务

时间:2012-11-04 23:51:47

标签: google-app-engine xmpp

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

我开始按OAuth 2.0 Authorization所述获取OAuth2令牌。我也在寻找一些有关如何在获得令牌后连接到gtalk服务器的帮助。我已阅读the example,但不确定如何在GAE上实施SASL auth。

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

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

1 个答案:

答案 0 :(得分: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>

它要求user_name。 这是你遇到的那种问题吗?我个人在这一点上遇到了障碍,因为很明显,因为它是OAuth,程序员不知道用户名。我不确定谷歌对此的建议是什么,我一直无法找到任何信息。

无论如何,假设您可以正确地对XMPP服务器进行身份验证,它应该像任何其他XMPP服务器一样。

我发现的有关gtalk XMPP实现的一些内容可能对您或其他人有所帮助:

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

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