iOS 11 AppAuth обрабатывает URI перенаправления, которое перенаправляет
При использовании AppAuth (v 0.90.0) для аутентификации Google OAuth в моем приложении iOS, особенно для iOS 11, происходит следующее:
- Запустите аутентификацию Google на клиенте iOS с URI перенаправления
http://myproduct.com/oauth-redirect
, Поскольку идентификатор клиента совпадает с идентификатором веб-приложения, я не могу указать пользовательский URL. - AppAuth запускает SFAuthenticationSession на клиенте, мне предлагается разрешить вход в систему. Выберите Продолжить. ( https://github.com/openid/AppAuth-iOS/blob/0.90.0/Source/iOS/OIDAuthorizationUICoordinatorIOS.m#L91-L95)
http://myproduct.com/oauth-redirect
перенаправляет на пользовательский URLmyproduct://auth
и блок завершения SFAuthenticationSession выполняется с URL обратного вызоваmyproduct://auth
,- Когда AppAuth возобновляет поток проверки подлинности, он проверяет, совпадает ли исходный URL-адрес с URL-адресом обратного вызова из предыдущего шага: https://github.com/openid/AppAuth-iOS/blob/0.90.0/Source/OIDAuthorizationService.m#L108-L110
- Так как
http://myproduct.com/oauth-redirect
а такжеmyproduct://auth
разные, поток останавливается.
Обратите внимание, что я использую clientID веб-приложения, чтобы я мог выполнять обмен токенами на стороне сервера.
В предыдущей версии AppAuth это было возможно, потому что я мог позвонить resumeAuthorizationFlowWithURL
непосредственно с обновленным URL.
Есть ли способ поддержать этот вариант использования без обновления AppAuth?
1 ответ
просто зарегистрируйте идентификатор пакета приложения как настраиваемую схему URL в Info.plist 🥳