Android AccountManager authToken и OAuth

Моя задача написать почтовый клиент IMAP для Gmail. Пока я знаю, что клиент должен аутентифицироваться через OAuth (есть также java-библиотека для аутентификации IMAP от Google). Но я хотел бы освободить пользователя от ввода пароля.

Android предоставляет классный «родной» способ получить authToken для служб учетной записи Google через AccountManager. Но интересно, как использовать authToken и для чего он нужен? Это только для аутентификации GAE?

Есть ли способ получить oauthToken и oauthTokenSecret без браузера (через AccountManager)?


person Oleksii Malovanyi    schedule 11.07.2011    source источник
comment
Ознакомьтесь с этим разговор с Google IO 2011. Существует довольно хороший пользовательский интерфейс для новых устройств Android с использованием описанного AccountManager.   -  person David Snabel-Caunt    schedule 11.07.2011
comment
Спасибо! Но я уже просмотрел эту библиотеку и обнаружил, что в Google API нет взаимодействия с gmail. Грустно, но факт, я должен использовать IMAP. Или я что-то упускаю?   -  person Oleksii Malovanyi    schedule 11.07.2011
comment
Я точно не знаю, но уверен, что к GMail можно получить доступ через OAuth. Я использую расширения Chrome, которые могут это сделать.   -  person David Snabel-Caunt    schedule 11.07.2011
comment
ОАут? Конечно. Суть заключалась в том, чтобы использовать метод getAuthToken учетной записи и предоставить authToken для OAuth. Но для Gmail это кажется невозможным.   -  person Oleksii Malovanyi    schedule 11.07.2011
comment
Я могу получить токен авторизации, используя URL-адрес oauth2:mail.google.com, но не могу чтобы выяснить, как использовать этот токен с javamail.   -  person Hemanshu Bhojak    schedule 28.12.2011
comment
Спасибо за ответ. Проблема остается. Если проблема, связанная с областью действия, решена, то следующая проблема заключается в том, чтобы выяснить, как использовать этот authToken для серверов, где необходимы токены OAuth.   -  person Oleksii Malovanyi    schedule 28.12.2011


Ответы (1)


Пробовали ли вы использовать «oauth2:https://mail.google.com/» в качестве «типа токена авторизации» (параметр authTokenType) при вызове AccountManager.getAutToken()?

Согласно тому, что сказано в 46:50 в упомянутый вами разговор, он должен работать.

Кстати, эта страница описывает, как получить токен OAuth2 для Google Tasks, и имеет ссылка на пример кода. Это также звучит так, как будто это просто вопрос предоставления правильного параметра authTokenType.

person unBrice    schedule 02.12.2011
comment
Должно работать и работает! Но только для библиотеки ClientLogin. Правильно? Когда есть много причин, по которым клиентское приложение Android должно получать токены OAuth, а не те, которые предоставляет AccountManager. И WebView кажется единственным способом... Спасибо за ответ! - person Oleksii Malovanyi; 02.12.2011
comment
Если вы используете authTokenType, представленный в примерах, токен, предоставленный AccountManager, должен быть токеном OAuth. Должен признаться, что сам еще не пробовал, но последний пример кода кажется явным по этому поводу (токен возвращается AccountManager используется с oauth2.draft10.GoogleAccessProtectedResource ). - person unBrice; 02.12.2011
comment
Вау! Спасибо за комментарий — на выходных попробую протестировать токен от AccountManager. - person Oleksii Malovanyi; 02.12.2011
comment
После получения токена, как установить его в imap при получении сообщений или при подключении? - person Hemanshu Bhojak; 27.12.2011
comment
получение доступа к google IMAP через AccountManager работает нормально. см. github.com/jberkel/sms-backup-plus для проекта, который использует этого. - person Jan Berkel; 10.01.2013