Diese Frage ähnelt: Authentifizieren Sie sich bei Google Talk (XMPP, Smack) mit einem authToken
Ich habe android.accounts.AccountManager-Klasse und ihre Methoden, um Authentifizierungstoken für Google-Konto zu erhalten:
%Vor%Ich kann Authentifizierungs-XML vorbereiten:
%Vor%(wobei "\ 0" ein einzelnes Oktett mit dem Wert Null sein soll). Verwenden Sie dies in der ursprünglichen SASL-Auth:
%Vor%
Aber ich habe es nicht geschafft, es mit der Smack-API zu integrieren, wie es jemand für den Facebook-Chat getan hat: XMPP mit Java Asmack-Bibliothek, die X-FACEBOOK-PLATTFORM unterstützt
Kann mir jemand helfen?
Vijay,
Dein Code hat mir sehr geholfen, danke! Ich poste hier, um meine Lösung für das Problem anzubieten, AccountManager zu verwenden, um sich bei Google Talk anzumelden. Bisher habe ich noch keine vollständige Lösung gefunden, aber ich habe meine basierend auf dem obigen Code entwickelt und ein paar Zeilen korrigiert, die nicht funktionieren.
Die Lösung besteht aus zwei Teilen. Die erste basiert auf der obigen Idee und dem obigen Code. Es ist eine Unterklasse von SASLMechanism zu erstellen:
%Vor%Der zweite Teil ist der Gebrauch davon. Die große Sache, die mir kein anderes Beispiel gab, ist, dass beim Token vom AccountManager-System der Tokentyp nicht "ah", sondern "mail" ist. Die Idee war da draußen in Beispielen, die eine direkte Kommunikation mit Google-Servern machen, um das Token zu bekommen, aber nicht in AccountManager anzufragen. Wenn Sie sie zusammenfügen, müssen Sie in Ihrem Treibercode Folgendes tun. Erstellen Sie eine Funktion, um das Token zu erhalten:
%Vor%Und dann rufen Sie es an, nachdem Sie sich vergewissert haben, dass das richtige SASL-System verwendet wird:
%Vor%Happy Google Talking!
Ich weiß, dass dieser Thread ein bisschen alt ist, aber ich dachte, ich würde helfen ... Also hier ist meine Klasse, die mit Smack funktioniert, indem sie mit dem Token-Mechanismus zu Gtalk verbindet. Wahrhaftig, ich würde lieber mit oauth2 gehen .. aber das scheint ok zu funktionieren. Stellen Sie sicher, dass Ihr Nutzername ähnlich ist
"<your_user>@gmail.com"
und es sollte funktionieren:
Viel Glück.