最近appleAuthProvider()
、iOS で Swift を使用して FirebaseUI に追加しました。Apple
Firebase コンソールでサインイン方法を有効にし、 Sign in with Apple
Capability を追加しました。
これまでのところすべて問題ありませんがauthUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?)
、 がデリゲートから呼び出された場合、 からのユーザーauthDataResult
、およびからのユーザーAuth.auth().currentUser
の値displayName
が設定されていないか、またはnil
.
皆さん、それを機能させるための解決策または回避策はありますか? Firebase はユーザーからのメールのみを提供します。これdisplayName
は私にとって必須です。
コードを以下に示します。
let authUI = FUIAuth.defaultAuthUI()
authUI?.shouldHideCancelButton = true
authUI?.delegate = delegate
authUI?.tosurl = Constants.Url.kFirebaseTermsOfService
authUI?.privacyPolicyURL = Constants.Url.kFirebasePrivacyPolicy
let emailAuth = FUIEmailAuth()
let facebookAuth = FUIFacebookAuth(permissions: ["public_profile", "email"])
let googleAuth = FUIGoogleAuth()
var providers: [FUIAuthProvider] = [emailAuth, facebookAuth, googleAuth]
if useAnonymous {
let anonymousAuth = FUIAnonymousAuth()
providers.append(anonymousAuth)
}
if #available(iOS 13.0, *) {
let appleAuth = FUIOAuth.appleAuthProvider()
providers.append(appleAuth)
}
authUI?.providers = providers
これが firebase デリゲート メソッドです。
func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?) {
if let error = error {
print(error)
return
}
if let result = authDataResult, let userInfo = result.additionalUserInfo {
if userInfo.isNewUser {
let username: String
if result.user.isAnonymous {
let usernameNumber = String(Int(Date().timeIntervalSince1970) * Int.random(in: 1...9)).suffix(6)
username = "Guest\(usernameNumber)"
} else {
username = result.user.displayName ?? "" // displayName is nil here
}
var data = [
"username" : username
]
// Do something here
}
}
}