Использование Android AccountManager для сторонней авторизации OAuth2

Я работаю над приложением, которое должно будет получить авторизацию через OAuth2 от стороннего веб-сервиса (стороннее означает, что это не Google, и я не являюсь его владельцем).

Эта статья:

http://developer.android.com/training/id-auth/authenticate.html

Похоже, я должен использовать AccountManager для этой цели. Подумав об этом, у меня возникли некоторые сомнения относительно пользы от этого, или даже если это уместно для меня. Если бы я хотел использовать учетную запись Google или другую учетную запись, которая уже была установлена ​​в AccountManager каким-либо другим приложением, то, очевидно, было бы неплохо получить учетные данные из AccountManager. Но так как я собираюсь использовать учетную запись, которая, скорее всего, отсутствует в AccountManager, мне придется выполнить всю работу, чтобы установить ее.

Предоставляет ли AccountManager поддержку при обработке запросов OAuth2? Если это не так, то что я получу от его использования?

И поскольку у меня нет веб-службы, связанной с этим типом учетной записи, целесообразно ли мне устанавливать такие учетные записи в AccountManager?

Спасибо!

1 ответ

Это может быть довольно поздний ответ после всех этих 4 лет, но позвольте мне дать вам короткий ответ.

Вы не можете и не должны устанавливать сторонние учетные записи для Oauth самостоятельно. Задача сторонних поставщиков OAuth, таких как Facebook или Twitter, заключается в реализации функциональности AccountManager и создании собственного типа учетной записи. Это примерно ориентировочно на https://developer.android.com/training/id-auth/custom_auth.html.

Существует несколько служб, включая поставщиков OAuth, таких как Facebook, Twitter, WeChat и т. Д., Которые регистрируют учетные записи пользователей в AccountManager, но я полагаю, что большинство из них просто используют его для реализации SyncAdapter (для которого требуется учетная запись), а не для предоставления функциональности OAuth третьим лицам. сторонние приложения, такие как ваше приложение.

Я думаю, что Google позволяет вам использовать их API, используя токен, полученный через AccountManager; Ссылка, которую вы предоставляете, дает пример использования AccountManager for Tasks API. Однако использование клиентской библиотеки - лучший вариант для достижения того же, что описано в https://developers.google.com/google-apps/tasks/quickstart/java.

Если сторонний поставщик OAuth не предоставляет вам никаких SDK или клиентских библиотек, у вас нет другого выбора, кроме как использовать предоставляемые им REST API.

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