我能够成功访问 Apple 返回的凭据,作为其新(WWDC '19 -- iOS 13)登录 Apple 库的一部分。
在此委托方法中访问凭证:
extension ViewController: ASAuthorizationControllerDelegate {
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
//here is credentials .
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用“用户”属性来提取用户 ID:
credential.user
//returns, for example, '000046.20082df1df9a41b78cd1552979288e19.2346' dummy value
Run Code Online (Sandbox Code Playgroud)
对于该特定 AppleID(也许是该特定应用程序),此“用户”属性是否被理解为静态/永久?
(我正在访问同步 API,并希望从 44 个字符的 Apple 'user' 凭证中硬编码用户凭证。)
我正在使用Apple实施Sign in,并注意到返回的email和fullName属性ASAuthorizationAppleIDCredential仅在此Apple ID的第一个Sign-In上填写。在所有后续登录中,这些属性均为零。
这是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()
}
Run Code Online (Sandbox Code Playgroud)
我正在此委托方法中收到证书:
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 = …Run Code Online (Sandbox Code Playgroud)