Amazon Cognito: Как прекратить получение ошибки redirect_mismatch при перенаправлении из браузера в приложение Android
Я пытаюсь создать проект Android, в котором я авторизую пользователя, заставив его войти в Amazon Cognito в браузере, который затем перенаправит обратно в мое приложение. К сожалению, когда открывается браузер, вместо того, чтобы перейти на нужную страницу входа, я получаю эту ошибку:
В моем AuthenticatorActivity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_authenticator);
Uri authzUrl = Uri.parse("https://<myDomain>.auth.us-west-2.amazoncognito.com/login?response_type=token&client_id=<myClientId>&redirect_uri=myapp://mainAct");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, authzUrl);
startActivity(launchBrowser);
}
В AndroidManifest:
<activity android:name=".MainActivity">
<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:host="mainAct" android:scheme="myapp"></data>
</intent-filter>
</activity>
Я не могу понять, что я делаю здесь неправильно. Я пропускаю шаг?
Ответы
Ответ 1
Хорошо, я оставляю лакомый кусочек здесь для тех, кто может найти его дальше. Я попал в эту проблему с той же проблемой, но, будучи новичком в Cognito и IdP/SSO, я понятия не имел, как это исправить. Вот что я сделал, чтобы в конце концов исправить это. Мы интегрировались с внешней службой, и мы получали эту ошибку. В разделе "Инструменты разработчика Chrome" → "Сеть" я начал записывать URL-адрес, который был посещен, и я снова попытался интегрировать SSO. Был URL-адрес, который появился в списке, который посетил Cognito с переадресацией на URL. Этот URL-адрес должен быть тем же URL-адресом, который указан в URL-адресе обратного вызова для Cognito.
Надеюсь, это спасет кого-то в будущем.
Ответ 2
Проверьте ваш обратный звонок и выйдите из него. Основной формат:
app_client_name:https://www.myapp.com/
Ответ 3
В моем случае ошибка была связана с тем, что CloudFront обслуживал старые файлы.
Решить это; Вы можете сделать файлы CloudFront недействительными через консоль AWS.
постскриптум можно использовать /*
для аннулирования всех файловhttps://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html