При попытке с Auth0 вы можете go следующим способом решить эту проблему.
Шаг 1.
if #available(iOS 13.0, *) {
// Create the authorization request
let request = ASAuthorizationAppleIDProvider().createRequest()
// Set scopes
request.requestedScopes = [.email, .fullName]
// Setup a controller to display the authorization flow
let controller = ASAuthorizationController(authorizationRequests: [request])
// Set delegates to handle the flow response.
controller.delegate = self
controller.presentationContextProvider = self
// Action
controller.performRequests()
}
Шаг 2
Реализуйте метод делегата и получите там код авторизации Apple.
extension ViewController: ASAuthorizationControllerDelegate {
@available(iOS 13.0, *)
func authorizationController(controller: ASAuthorizationController,
didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
// Success
guard let authorizationCode = appleIDCredential.authorizationCode,
let authCode = String(data: authorizationCode, encoding: .utf8) else {
print("Problem with the authorizationCode")
return
}
}
}
}
Шаг 3
Теперь вы используете этот authCode
для входа в Auth0.
func appleSignin(with authCode: String) {
Auth0.authentication().tokenExchange(withAppleAuthorizationCode: authCode)
.start { result in
switch result {
case .success(let credentials):
//LoginSucces
case .failure(let error):
//Issue with login.
}
}
}
В этом методе вы не показываете веб-просмотр, как для других методов входа с Auth0.
Я разместил это в сообществе Auth0 (проблема, которую я разместил здесь), и один из их инженеры ответили мне, чтобы я подошел к этому так. Проверьте это для получения дополнительной информации Войти через Apple - Auth0