web-dev-qa-db-fra.com

ASAuthorizationAppleIDRequest avec le nom et la portée de la messagerie renvoie des valeurs nulles

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
}
7
mhaddl

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.

0
spig