web-dev-qa-db-ja.com

名前とメールスコープを含むASAuthorizationAppleIDRequestがnil値を返す

Apple=でサインインを実装しています。返されたemailfullNameおよびASAuthorizationAppleIDCredentialプロパティは、このApple IDの最初のサインイン。以降のすべてのサインインでは、これらのプロパティはnilです。

これはiOS 13のバグですか、それとも予想される動作ですか?

これが、リクエストを開始するために使用しているコードです。

@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()
}

このデリゲートメソッドで資格情報を受け取っています。

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

https://developer.Apple.com/documentation/signinwithapplerestapi/authenticating_users_with_sign_in_with_Apple では、

ユーザーの情報は後続のAPI呼び出しでアプリと共有されないため、API応答から情報を受け取った直後に、アプリはそれをローカルに保存する必要があります。プロセスまたはネットワークで後続の障害が発生した場合は、ローカルストレージから情報を読み取って、もう一度処理することができます。

0
spig