Использование Android AccountManager для получения авторизации для gdata

Поэтому я пытаюсь синхронизировать документы Google, не запрашивая у пользователя его учетные данные. Я использую этот код, чтобы получить токен авторизации:

AccountManager mgr = AccountManager.get(activity);
authToken = mgr.blockingGetAuthToken(account, DocsService.DOCS_SERVICE, true);

Это возвращает токен авторизации, который выглядит хорошо отформатированным. Итак, на моем DocsService я запускаю:

service.setAuthSubToken(authToken);

Однако, когда я пытаюсь использовать API, я просто получаю исключение AuthenticationException. Есть идеи как подойти к этой ошибке?

изменить: у меня есть разрешение USE_CREDENTIALS.

3 ответа

Решение

Проблема заключается в том, что возвращаемый токен является токеном ClientLogin, а не токеном AuthSub. Еще большая проблема заключается в том, что клиентская библиотека GData Java официально не поддерживает Android. Недавно мы добавили заметку на домашней странице клиентской библиотеки GData Java, что для Android мы рекомендуем вместо этого клиентскую библиотеку Google API для Java.

Вспомним два примера, которые будут полезны для вас при начале работы с клиентской библиотекой API Google для Java: calendar-v2-atom-android-sample и docs-v3-atom-oauth-sample

Раскрытие информации: я являюсь владельцем как клиентской библиотеки GData Java, так и клиентской библиотеки Google API для проектов Java.

Возможно, вы также захотите взглянуть на слайды / видео сеанса Google I/O 2011 от Yaniv, чтобы узнать, как получить доступ к API GData на Android.

http://www.google.com/events/io/2011/sessions/best-practices-for-accessing-google-apis-on-android.html

Как объяснил Янив, Gdata Lib не работает в Android. Я потратил несколько часов без результата. Это выглядит довольно странно, его продукт Google и до сих пор не поддерживается на собственной платформе (Android).

Во всяком случае, я разработал клиентскую библиотеку, которая работает на Android. Я управляю проектом в Google Code - http://code.google.com/p/google-spreadsheet-lib-android/

Вы можете попробовать.

Другие вопросы по тегам