2011-06-01 2 views
4

L'application que j'écris est en train de se connecter à un serveur XMPP, et si l'utilisateur le souhaite, je veux lui donner la possibilité de se connecter à son compte google chat, sans avoir à entrer les informations d'identification ...Authentification à Google Talk (XMPP, Smack) en utilisant un authToken

pour ce faire, j'obtenir la permission d'utiliser le compte Google, obtenir le jeton et l'authentification à Google talk (serveur XMPP, en utilisant Smack) en utilisant le jeton ..

Le problème est .. comment je fais ça? Je veux dire, comment m'authentifier sur le serveur GTalk si je connais le login et le token?

Des idées, des idées? :)
Si non, peut-être quelqu'un sait où pourrais-je trouver quelqu'un qui sait? (Contacts Google, n'importe qui?: P)

Répondre

8

Vous recherchez de la documentation sur le mécanisme X-GOOGLE-TOKEN SASL. This devrait être le début. Utiliser le service = mail:

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

qui retournera 200 OK et trois valeurs:

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

Parse la chaîne Auth, puis construire une chaîne avec cette forme:

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

(où "\ 0" est destiné à être un seul octet avec la valeur zéro). Utilisez ce dans la SASL initiale auth:

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

Considérant que je codage sur Android, je pense que je devrais être en mesure d'obtenir le jeton d'authentification en utilisant le SDK Android (sinon il n'a pas de sens - cette première demande besoin de la pass: P) Je vais vérifier la deuxième partie aujourd'hui, et si cela fonctionne comme j'ai besoin - ce sera parfait^_^ –

+0

C'était parfaitement parfait! Exactement ce dont j'avais besoin! Merci beaucoup :) –

+0

Une question: Y at-il un moyen de le faire fonctionner avec le type de service "talk" plutôt que "mail"? Il semble que «parler» serait plus approprié, mais il ne semble pas me permettre de se connecter –

Questions connexes