Использование 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.