J'implémente Se connecter avec Apple et j'ai remarqué que les propriétés email
et fullName
des ASAuthorizationAppleIDCredential
retournées ne sont remplies que Première connexion pour cet Apple ID. Sur toutes les connexions suivantes, ces propriétés sont nulles.
Est-ce un bug sur iOS 13 ou un comportement attendu?
Voici le code que j'utilise pour démarrer la demande:
@available(iOS 13.0, *)
dynamic private func signInWithAppleClicked() {
let request = ASAuthorizationAppleIDProvider().createRequest()
request.requestedScopes = [.fullName, .email]
let controller = ASAuthorizationController(authorizationRequests: [request])
controller.delegate = self
controller.presentationContextProvider = self
controller.performRequests()
}
Je reçois les informations d'identification dans cette méthode déléguée:
public func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
guard let credential = authorization.credential as? ASAuthorizationAppleIDCredential else { return }
let userIdentifier = credential.user
let token = credential.identityToken
let authCode = credential.authorizationCode
let realUserStatus = credential.realUserStatus
let mail = credential.email // nil
let name = credential.fullName // nil
}
Dans https://developer.Apple.com/documentation/signinwithapplerestapi/authenticating_users_with_sign_in_with_Apple il dit:
Étant donné que les informations de l'utilisateur ne sont pas partagées avec votre application dans les appels d'API ultérieurs, votre application doit les stocker localement, immédiatement après les avoir reçues de la réponse de l'API. En cas d'échecs ultérieurs de votre processus ou de votre réseau, vous pouvez lire les informations du stockage local et réessayer de les traiter.