Реагировать на собственный OAuth2 redirect_uri: неверная схема
Недавно я узнал о реакции на нативную и столкнулся с такой нерешаемой проблемой. Я пытаюсь аутентифицироваться с помощью gmail OAuth2 из моего приложения, в качестве параметра перенаправления я поставил myscheme: // oauth, весь URL выглядит так:
Я зарегистрировал intent-фильтр в моем manifest.xml, который выглядит так:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="myscheme" android:host="oauth"/>
</intent-filter>
</activity>
Я использую собственную ссылку "Реакция" для открытия URL-адреса, и я получаю сообщение об ошибке (в браузере): 400 Неверное значение параметра для redirect_uri: Неверная схема: myscheme: // oauth
Кто-нибудь может мне помочь, что мне здесь не хватает?
1 ответ
Из документов я вижу две проблемы с вашим URL:
- Пользовательская схема должна содержать период, чтобы быть действительным
+ Изменить myscheme
что-то вроде com.myapp
,
- Обратите внимание на один "/" после пользовательской схемы URI, который отличается от обычных HTTP-URL
+ Изменить myscheme://oauth...
в myscheme:/oauth...
После этих исправлений ваш URL должен выглядеть следующим образом com.myapp.myscheme:/oauth...
вместо myscheme://oauth...
Я использую библиотеку AppAuth для получения токенов OAuth2. Согласно официальному документу Google, этот формат мне подходит.
<your.app.application.id>:/oauth2callback
Например, если идентификатор вашего приложения com.example.app
, то в вашем AndroidManifest.xml
<activity android:name="net.openid.appauth.RedirectUriReceiverActivity">
<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="com.example.app" />
</intent-filter>
</activity>
И redirectUrl, предоставляемый AppAuth, будет выглядеть так
private val redirectUrl = "com.example.app:/oauth2callback"
Надеюсь, это кому-то поможет.