Аутентификация одной учетной записи Google для API нескольких данных Google в Android
Привет энтузиаст Android, я изо всех сил пытаюсь найти решение этой проблемы. Я планирую получить доступ к Календарю пользователя Google и Документам Google (используя google-api-java-client-v1.6.0). Я могу получить доступ к учетной записи Google пользователя через AccountManager, но я не ошибся при запросе authToken для аутентификации пользователя по этой причине:
Как я буду обрабатывать несколько запросов authToken для Документов и Cal в одном действии, когда пользователь подтверждает заявку на доступ к своим учетным записям Google?
В моем приложении Google Docs и Cal находятся на разных вкладках, работающих в фоновом режиме, в тот момент, когда пользователь разрешает доступ к учетной записи пользователя.
Любая ссылка на учебники будет принята с благодарностью.
TYIA.
1 ответ
Если я вас правильно интерпретирую, вам интересно, как справиться с тем, что вам нужен один authToken для Календаря и один authToken для Документов?
Глядя на пример кода для использования клиентских библиотек, не могли бы вы сделать что-то вроде этого:
private final static String CAL_AUTH_TOKEN_TYPE = "cl";
private final static String DOCS_AUTH_TOKEN_TYPE = "writely"; // Not sure this is correct
// This will ask the user for permissions the first time
Bundle docsBundle = manager.getAuthToken(account, DOCS_AUTH_TOKEN_TYPE, true, null, null);
Bundle calBundle = manager.getAuthToken(account, CAL_AUTH_TOKEN_TYPE, true, null, null);
// Do whatever syncing you need
doWork(docsBundle, calBundle);
Когда вы сделаете это в первый раз, пользователь получит всплывающее окно, запрашивающее доступ к его календарю. После подтверждения должно появиться другое всплывающее окно с запросом разрешения для документов. После получения подтверждения всплывающие окна больше не появляются (если пользователь не может переустановить ваше приложение). Так что я не думаю, что вам нужно беспокоиться ни о чем. Просто убедитесь, что вы пытаетесь получить authTokens в первый раз в вашем UI-потоке, а не в фоновом процессе. В фоновом процессе всплывающее окно не появится.