Приложение вызывает API серверного запроса, кодирует запрос в Base64 и создает URL-адрес аутентификации следующим образом:
/>(domain)/pass-key/challenge?challenge=(base64Challenge)&redirect_uri=myapp://callback
Затем мы запускаем ASWebAuthenticationSession с этим URL-адресом. Когда Интернет завершает поток пароля, он перенаправляется на нашу схему приложения с ответом навигатора ключей доступа следующим образом:
myapp://callback?code=(base64)
Это отлично работает на следующих устройствах, и мы получаем правильный код:
iPhone 11 (iOS 18.5),
iPhone 12/13 Pro Max (iOS 26)
Но происходит сбой:
iPhone X (iOS 16.7) → мы получаем это:
myapp://callback?code=e30%3D
e30%3D, который после удаления процентного кодирования и декодирования base64 преобразуется в {} (пустой объект JSON).
Даже когда мы вручную открываем тот же URL-адрес в Safari на iOS 16.7, завершите процедуру ввода пароля и позвольте ему перенаправиться в наше приложение, мы все равно получим myapp://callback?code=e30%3D.
Дополнительные сведения:
- Я проверил это на двух разных устройствах iPhone X, оба вошли в систему с помощью iCloud.
- Мы невозможно использовать ASAuthorizationController, поскольку наше приложение поддерживает сторонние домены для ключей доступа, которые не могут быть добавлены в связанные домены.
- В чем может быть потенциальная проблема и как ее решить?
- С какой минимальной версией iOS будет моя текущая работа по реализации?
Подробнее здесь: https://stackoverflow.com/questions/797 ... onse-on-io
Мобильная версия