Android Google Drive OAuth с CustomTabsIntent
Я пытался заставить Google OAuth работать на Android, и я постоянно сталкиваюсь с препятствиями.
Прямо сейчас, в моем манифесте, я добавил собственную схему URL и хост для моего URL перенаправления, например, так:
Когда я пытаюсь использовать эту схему URL в намерении Google OAuth, я получаю следующую ошибку:
После некоторого поиска в Google, я нашел этот ответ на stackru, подсказывая мне переформатировать мою схему URL, чтобы com.myapp.myscheme:/oauth
поэтому я установил для redirect_uri значение com.loop.loop:/oauth
, поскольку com.loop
это имя моей посылки, loop
это моя схема, и oauth
мой хозяин
После этого я получаю эту ошибку:
Эта ошибка говорит мне, что мне нужно где-то зарегистрировать свой URI перенаправления, поэтому я перехожу на консоль API Google, где я зарегистрировал свой client_id. Тем не менее, буквально нет места для регистрации моего URI перенаправления:
По какой-то причине, используя com.loop:/oauth
работает, но он не перенаправляет обратно в мое приложение после авторизации. Вместо этого он просто переходит на главную страницу Google.
Вот код, который я использую для запуска пользовательских вкладок Chrome:
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent chromeIntent = builder.build();
chromeIntent.launchUrl(this, Uri.parse(url));
Это URL OAuth, который я использую:
https://accounts.google.com/o/oauth2/auth
Я понятия не имею, что я должен делать здесь, и документация не очень полезна. Я также знаю, что в Android есть библиотека Google Auth, но меня это не интересует, потому что она специфична для Google, и я просто пытаюсь создать универсальный контроллер OAuth. Я также пытался использовать WebView, но Google не позволяет OAuth через WebView. Пожалуйста помоги
1 ответ
Ну, я смог понять это из этого.
Очевидно, для Google oauth фильтр намерений должен выглядеть следующим образом:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="[YourPackageName]" />
</intent-filter>
замещать [YourPackageName]
с именем пакета вашего приложения для Android, и используйте [YourPackageName]:/oauth
как ваш URL перенаправления (часть oauth может быть названа как угодно)
Так э-э... спасибо Google за документирование этого нигде