Android Google Drive OAuth с CustomTabsIntent

Я пытался заставить Google OAuth работать на Android, и я постоянно сталкиваюсь с препятствиями.

Прямо сейчас, в моем манифесте, я добавил собственную схему URL и хост для моего URL перенаправления, например, так:

Пользовательская схема OAuth и хост

Когда я пытаюсь использовать эту схему URL в намерении Google OAuth, я получаю следующую ошибку:

Ошибка схемы URL

После некоторого поиска в Google, я нашел этот ответ на stackru, подсказывая мне переформатировать мою схему URL, чтобы com.myapp.myscheme:/oauthпоэтому я установил для redirect_uri значение com.loop.loop:/oauth, поскольку com.loop это имя моей посылки, loop это моя схема, и oauth мой хозяин

После этого я получаю эту ошибку:

Несоответствие перенаправления URI

Эта ошибка говорит мне, что мне нужно где-то зарегистрировать свой URI перенаправления, поэтому я перехожу на консоль API Google, где я зарегистрировал свой client_id. Тем не менее, буквально нет места для регистрации моего URI перенаправления:

Консоль Google API

По какой-то причине, используя 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 за документирование этого нигде

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