我正在编写的应用程序正在连接到XMPP服务器,如果用户选择,我想为他们提供连接到他们的Google聊天帐户的选项,而无需输入凭据...
要做到这一点,我将获得使用Google帐户的权限,获取令牌并使用令牌对Google Talk(XMPP服务器,使用Smack)进行身份验证。
问题是..我该怎么做?我的意思是,如果我知道登录和令牌,我如何对GTalk服务器进行身份验证?
任何想法,见解? :)
如果没有,也许有人知道我在哪里可以找到知道的人? (谷歌联系人,任何人?:P)
答案 0 :(得分:8)
您正在寻找有关X-GOOGLE-TOKEN SASL机制的文档。 This应该是开始。使用service = mail:
https://www.google.com/accounts/ClientLogin?
accountType=GOOGLE&
Email=YOURUSERNAME@gmail.com&
Passwd=YOURPASSWORD&
service=mail
将返回200 OK
和三个值:
SID=<long string>
LSID=<long string>
Auth=<long string>
解析出Auth字符串,然后使用以下格式构造一个字符串:
jidAndToken ="\0" + UTF8(YOURUSERNAME@gmail.com) + "\0" + Auth
(其中“\ 0”旨在是值为零的单个八位字节)。在初始SASL身份验证中使用它:
<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl'
mechanism='X-GOOGLE-TOKEN'>Base64(jidAndToken)</auth>