Сделайте запрос авторизации обмена токеном с помощью AppAuth-Android, но НЕ с помощью пользовательских ярлыков
Таким образом, вся предпосылка этого вопроса может быть тупой и поэтому спорным вопросом, но здесь идет:
У меня есть собственный IdP с возможностью обмена токена oauth1 + секрет на токены OIDC. Это фактически тихий запрос авторизации для переключения уже зарегистрированных приложений со старой системы на новую. Это все функции.
Однако использование пользовательской вкладки для выполнения запроса означает, что он открывает браузер. При этом на телефонах без установленного Chrome браузер часто даже не закрывается, как это делают пользовательские вкладки Chrome после выполнения запроса. Я хотел бы избежать этого полностью, НЕ используя пользовательские вкладки для выполнения запроса.
Итак, я использовал okhttp для выполнения запроса. ohttp не обрабатывает редиректы на uris, поэтому по ответу я:
if (response.isRedirect()){
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(response.headers().get("location")));
startActivity(intent);
}
Это получает намерение net.openid.appauth.RedirectUriReceiverActivity
Однако сейчас это нужно проверить AuthorizationRequest request = PendingIntentStore.getInstance().getOriginalRequest(state);
и я не могу установить исходный запрос в PendingIntentStore, так как он недоступен в моем пользовательском performSilentAuthorizationRequest
,
Должен ли я клонировать AppAuth-Android, чтобы просто взломать доступ к PendingIntentStore? Я полагаю, я также могу продлить RedirectUriReceiverActivity
и измените его, чтобы использовать автономную копию PendingIntentStore
что я могу получить доступ. Но фактически это то же самое, просто обойти RedirectUriReceiverActivity
"s PendingIntentStore
проверять.
Все это было начато, чтобы предотвратить неприятную ситуацию с пользовательским интерфейсом, когда браузер излишне всплывал. Так что любое предложение, которое обойдется, будет приветствоваться.