Amazon Cognito: Как прекратить получение ошибки redirect_mismatch при перенаправлении из браузера в приложение Android

Я пытаюсь создать проект Android, в котором я авторизую пользователя, заставив его войти в Amazon Cognito в браузере, который затем перенаправит обратно в мое приложение. К сожалению, когда открывается браузер, вместо того, чтобы перейти на нужную страницу входа, я получаю эту ошибку:

enter image description here

В моем 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/

cognito

Ответ 3

В моем случае ошибка была связана с тем, что CloudFront обслуживал старые файлы.

Решить это; Вы можете сделать файлы CloudFront недействительными через консоль AWS. постскриптум можно использовать /* для аннулирования всех файловhttps://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html