2012-11-04 138 views
1

我正在实施一个xmpp客户端(现在只适用于gtalk)。Gtalk OAuth令牌连接到Gtalk服务

我开始获取OAuth 2.0 Authorization上描述的OAuth2令牌。一旦我有了令牌,我也正在寻找一些关于如何连接到gtalk服务器的帮助。我已阅读the example,但不确定在GAE上将如何实施SASL认证。

接下来的事情,如何使它像聊天客户端一样工作,真正的用户可以聊天。我看到examples使用我可以使聊天机器人,和其他examples这需要用户输入他们的用户名和密码才能聊天。

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

回答

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
  • 的“to”属性的<stream:stream>元素看起来需要是“gmail.com”而不是服务器地址
  • 服务器使用的证书需要验证来自“gmail.com”而不是服务器地址(当启动TLS)
  • T他的网页可能会有所帮助:https://developers.google.com/cloud-print/docs/rawxmpp(都记录下来步骤#2)

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

+0

请参阅http://stackoverflow.com/questions/14315877/xmpp-google-talk -x-oauth2-login-require-username/14360701解决用户名问题。 – dexy

相关问题