Аутентификация в Google Talk (XMPP, Smack) с использованием authToken

Приложение, которое я пишу, подключается к серверу XMPP, и, если пользователь выберет, я хочу дать ему возможность подключиться к его учетной записи Google Chat, без необходимости вводить учетные данные...

Для этого я получил бы разрешение на использование учетной записи Google, получил токен и прошел аутентификацию в Google Talk (XMPP-сервер, используя Smack) с помощью токена.

Проблема в том.. как мне это сделать? Я имею в виду, как мне пройти аутентификацию на сервере GTalk, если я знаю логин и токен?

Есть идеи, идеи?:)
Если нет, может кто-нибудь знает, где я могу найти кого-то, кто знает? (Контакты гугл, кто-нибудь?:P)

1 ответ

Решение

Вы ищете документацию по механизму X-GOOGLE-TOKEN SASL. Это должно быть началом. Использовать сервис = почта:

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>
Другие вопросы по тегам