2011-06-01 58 views
4

我正在編寫的應用程序連接到XMPP服務器,如果用戶選擇,我想讓他們選擇連接到他們的Google聊天帳戶,而無需不必輸入憑據......使用authToken驗證Google Talk(XMPP,Smack)

要做到這一點,我會去使用谷歌帳戶,獲得令牌和驗證到Google Talk允許(XMPP服務器,使用拍擊)使用令牌..

問題是......我該怎麼做?我的意思是,如果我知道登錄和令牌,我如何驗證GTalk服務器?

任何想法,見解? :)
如果沒有,也許有人知道我在哪裏可以找到知道的人? (谷歌聯繫人,任何人?:P)

回答

8

您正在尋找有關X-GOOGLE-TOKEN SASL機制的文檔。 This應該是開始。使用服務=郵箱:

https://www.google.com/accounts/ClientLogin? 
    accountType=GOOGLE& 
    [email protected]& 
    Passwd=YOURPASSWORD& 
    service=mail 

將返回200 OK和三個值:

SID=<long string> 
LSID=<long string> 
Auth=<long string> 

解析出驗證字符串,然後構造這種形式的字符串:

jidAndToken ="\0" + UTF8([email protected]) + "\0" + Auth 

(其中「\ 0」旨在是一個值爲零的單個八位字節)。在最初的SASL驗證中使用這個:

<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' 
     mechanism='X-GOOGLE-TOKEN'>Base64(jidAndToken)</auth> 
+0

考慮到我在android上編碼,我認爲我應該能夠使用android SDK獲得auth令牌(否則它沒有任何意義 - 第一個請求需要通過:P) 今天我會檢查第二部分,如果它按我的需要工作 - 這將是完美的^ _^ – 2011-06-02 09:05:39

+0

這是完美的地方!正是我需要的!非常感謝:) – 2011-06-02 22:15:17

+0

一個問題:有什麼辦法可以使它與服務類型「談話」而不是「郵件」一起工作?看起來「聊天」會更合適,但似乎並不允許我登錄 – 2011-06-04 14:54:00