用户凭据-使用Apple(SwiftUI)登录
我正在测试通过登录苹果向Firebase注册一名用户。我有可以查看的基本设置 在我的用户凭据-使用Apple(SwiftUI)登录,swift,google-cloud-firestore,firebase-authentication,swiftui,sign-in-with-apple,Swift,Google Cloud Firestore,Firebase Authentication,Swiftui,Sign In With Apple,我正在测试通过登录苹果向Firebase注册一名用户。我有可以查看的基本设置 在我的Auth.Auth().sign(:)with credential方法中,我试图从appleIDCredential中提取.fullName,以便稍后用于识别用户 以下是我的:didCompleteWithAuthorization委托方法中的代码,该方法位于功能授权控制器(:): 我使用.fullName上的.descriptionget only方法来获取返回凭证的文本表示,该凭证是身份验证时用户的全名 但
Auth.Auth().sign(:)
with credential方法中,我试图从appleIDCredential
中提取.fullName
,以便稍后用于识别用户
以下是我的:didCompleteWithAuthorization
委托方法中的代码,该方法位于功能授权控制器(:)
:
我使用.fullName
上的.description
get only方法来获取返回凭证的文本表示,该凭证是身份验证时用户的全名
但是最后的displayName
包括文字givenName和familyName前缀,即:
givenName: David familyName: Example
我尝试将字符串拆分为四个元素的数组,并进行过滤,但没有成功
我想从凭证返回davidexample
,凭证是身份验证点处的用户名
解决方案
if let _ = authResult?.user {
let changeRequest = authResult?.user.createProfileChangeRequest()
if let givenName = appleIDCredential.fullName?.givenName,
let familyName = appleIDCredential.fullName?.familyName {
changeRequest?.displayName = "\(givenName) \(familyName)"
}
changeRequest?.commitChanges(completion: { (error) in
if let error = error {
print(error.localizedDescription)
} else {
print("Updated display name: \(changeRequest?.displayName ?? "")")
}
})
}
您可以分别提取
givenName
和familyName
并将它们重新组合为displayName
,如下所示:
if let givenName = appleIDCredential.fullName?.givenName,
let familyName = appleIDCredential.fullName?.familyName {
changeRequest?.displayName = "\(givenName) \(familyName)"
}
就这样。非常感谢。
if let givenName = appleIDCredential.fullName?.givenName,
let familyName = appleIDCredential.fullName?.familyName {
changeRequest?.displayName = "\(givenName) \(familyName)"
}