Flutter iOS WebView не запускает запрос на сброс пароля при открытии из второго WebView (Android работает нормально)IOS

Программируем под IOS
Ответить
Anonymous
 Flutter iOS WebView не запускает запрос на сброс пароля при открытии из второго WebView (Android работает нормально)

Сообщение Anonymous »

Я работаю над приложением Flutter, которое интегрирует внешнюю систему аутентификации, предоставленную другой компанией. Потоки входа в систему и сброса пароля полностью обрабатываются внутри WebView (его серверная часть + размещенные на нем HTML-страницы).
Обзор потока
  • Пользователь открывает приложение Flutter
  • Нажимает «Вход»
  • WebView открывает и загружает внешнюю страницу входа
  • Пользователь нажимает «Забыли пароль»
  • Второй WebView открывается (также внешний)
  • Пользователь вводит свой адрес электронной почты и отправляет форму
  • Ожидается: отправляется электронное письмо для сброса пароля
Проблема
На iOS запрос на шаге 6 никогда не доходит до сервера.
WebView просто не отправляет запрос — ни перенаправления, ни сетевого трафика.
На Android все работает отлично. Кроме того, очень сложно генерировать журналы любого типа, просто при отправке запроса ничего не происходит.
Похоже, что открытие второго WebView на iOS вызывает переключение контекста, которое нарушает запрос.
Внешний провайдер утверждает, что его серверная часть + страницы настроены правильно, а поскольку Android работает, проблема, похоже, на стороне iOS/WebView/Flutter.
Что мы пробовали
  • Первоначально использовалось oauth2_client → та же проблема
  • Перешел на flutter_appauth → та же проблема
  • Проверенные URL-адреса перенаправления и схемы обратного вызова
  • Очистка DerivedData Xcode
  • Сброс папки сборки iOS (очистка флаттера, удаление /ios/Pods, установка модуля)
  • Проверено iOS права
  • Пыталась настроить постоянное хранилище и файлы cookie между обоими WEbView (например, prepreEphemeralSession).
Похоже, ничего не решает проблему.
Кто-нибудь сталкивался с проблемой, когда iOS блокирует запросы от второго WebView, особенно когда поток включает аутентификацию или отправку формы, размещенную на внешнем сервере?
Отказ от ответственности: я совершенно новичок во флаттере + auth + ios
Поэтому, если вам нужен какой-либо конкретный код, просто сообщите мне, и я постараюсь предоставить вам всю необходимую информацию.

Код: Выделить всё

Future signInWithUsernamePassword() async {
try {
_authType = AuthType.emailPassword;
AccessTokenResponse tkn = await _authProvider.authorizeAndExchangeCode(
clientId: AuthType.emailPassword.clientId,
redirectUrl: "com.example.app://oauth2redirect",
discoveryUrl: "https://example.com/auth/realms/yourrealm/.well-known/openid-configuration",
scopes: const ["openid", "profile", "roles"],
preferEphemeral: false,
);
await _handleTokenResponse(tkn);
} catch (e) {
FlutterError.presentError(FlutterErrorDetails(exception: e));
print("Error: " + e.toString());
}
}
Большое спасибо за ваш вклад!


Подробнее здесь: https://stackoverflow.com/questions/798 ... -from-seco
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»