#angular #stripe-payments #aws-amplify
#angular #stripe-платежи #aws-amplify
Вопрос:
В моем проекте Angular я настроил AWS Amplify с OAuth и размещенным пользовательским интерфейсом.
Все работает нормально. Когда я хочу подключиться к Google, меня перенаправляют обратно с помощью URL, подобногоhttp://localhost:4200/?code=de79bfa4-xxxxxxamp;state=2xxxxxx который хорошо обрабатывается AWS Amplify Hub.
Теперь я хочу настроить Stripe Connect в своем проекте, который также использует поток подключения OAuth.
Итак, я настраиваю свою ссылку OAuth, как определено в документации, добавив ссылку, как показано ниже:
<a class="stripe-connect" href="https://connect.stripe.com/oauth/authorize?response_type=codeamp;client_id=ca_xxxxxxamp;scope=read_write"><span>Connect with Stripe</span></a>
Проблема
Я перенаправлен обратно с URL-адресом, подобнымhttp://localhost:4200/stripe?scope=read_writeamp;code=ac_xxxxxx
К сожалению, этот URL-адрес также обрабатывается Amplify, и я получил следующее сообщение об ошибке :
zone.js:1152 POST https://[домен].amazoncognito.com/oauth2/token 400
ОШИБКА core.js: 15724 Ошибка: Не обнаружен (в обещании): Ошибка: invalid_grant
Ошибка: invalid_grant
Что понятно, потому что Amplify пытается обрабатывать код Stripe Connect..
Но я не знаю, как исправить это поведение.
Есть идеи по решению этой проблемы?
Для воспроизведения
- Настройте репозиторий примеров с помощью пользовательского интерфейса Amplify Auth, размещенного на хостинге
- Отредактируйте идентификатор клиента Stripe в
stripe.component.html
- Запуск проекта
- Подключитесь к Google
- Перейдите к настройкам
- Нажмите на ссылку «Подключиться с помощью Stripe»
- В форме Stripe нажмите «Игнорировать эту форму учетной записи»
- Увидеть ошибку
Ответ №1:
Я связался с командой Amplify, и это нормальное поведение:
https://github.com/aws-amplify/amplify-js/issues/3157
С потоками OAuth в Amplify и потоком предоставления кода, как только вы перенаправитесь обратно от третьей стороны, Amplify автоматически проанализирует URL-адрес для извлечения кода и использует это для получения учетных данных от конечной точки третьей стороны / токена.
К сожалению, в настоящее время мы не можем добавлять исключения или даже фильтры для Amplify, чтобы не выполнять автоматический анализ URL.