Лучший способ использовать API Google с использованием OAuth 2.0 на Android

Я пытаюсь перенести приложение Android с помощью OAuth 1.0a на OAuth 2.0. (с использованием клиентской библиотеки Google API для Java / Android для моих нужд OAuth 2.0).

Какое решение для доступа к API Google с использованием OAuth 2.0 на платформе Android является наилучшим / предпочтительным, которое также учитывает аспект удобства использования. Пользователь должен иметь возможность легко авторизовать доступ, легко интегрируясь с моим приложением для Android.

Приложение в настоящее время использует веб-поток OAuth 1.0, в котором мое приложение открывает браузер, чтобы позволить пользователю авторизовать доступ, а с помощью настраиваемого URI перенаправления мое приложение способно получить токен доступа. Он работает довольно хорошо, но мне не нравился тот факт, что мне нужно выйти из приложения, чтобы открыть браузер для отображения веб-страницы. Я думал, что OAuth 2.0 может обойти это и улучшить взаимодействие с пользователем.

Я начал рассматривать интеграцию Adroid AccountManager-OAuth2, как описано в Google IO , поскольку она не включает веб-браузер и более тесно связан с Android, но он просто не работает так, как должен. Это не задокументировано, и неясно, останется ли он жизнеспособным вариантом в будущем.

Теперь я начал исследовать стандартный веб-поток OAuth 2.0.

Здесь у меня есть 2 варианта:

Настроить Клиент OAuth 2.0 в качестве установленного приложения и используйте urn: ietf: wg: oauth: 2.0: oob redirect URI.

Не очень чистое решение, так как я не собираюсь заставлять своих пользователей копировать код в мою приложение. Это совершенно неудобно для пользователя.

В Использование OAuth 2.0 для доступа к документации API Google упоминается, что существует способ опроса заголовка страницы для анализа URL-адреса, но я также вижу с этим много проблем с юзабилити, и мне действительно не хочется писать такой сантехнический код. Если существует клиентская библиотека, которая могла бы сделать это за меня, я был бы рад изучить это дополнительно, но пока я отказался от этой опции.

Настройте клиент OAuth 2.0 как веб-приложение и используйте URI перенаправления .

Здесь я заметил, что нестандартные схемы запрещены в OAuth 2.0. Раньше можно было использовать что-то вроде обратного вызова xoauth: //, но теперь это запрещено. При настройке URI перенаправления, например http://mysite.com/oauth2/callback , я не могу, чтобы Android открывал мои действия при перенаправлении страницы Google OAuth 2.0, несмотря на то, что настроен правильный фильтр намерений для этого. http://mysite.com/oauth2/callback просто отображается в моем браузере.

Следующее работает.

Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("http://mysite.com/oauth2/callback"));
startActivity(i);

Но когда страница Google OAuth 2 перенаправляется на тот же URL-адрес, он просто отображается в браузере.

Даже если это сработает, пользователю все равно будет представлено всплывающее окно выбора (открыть в браузере или открыть с помощью Android Activity). С точки зрения удобства использования это также неприемлемо.

Я ищу лучшее решение, чем описанные здесь.

С уважением, Дэви

5
задан ddewaele 6 August 2011 в 13:06
поделиться