FirebaseAuthとFirestoreをuidで繋げる
前回の『FirebseAuthでアカウントを作成するコード』からEmailとPasswordを使ってアカウントを作成していきました。この情報をFirestoreに繋げていきたいと思います。
コードはこんな感じ
ViewController.swift
//前回の記事を参考にしてください→https://qiita.com/agachan0930/items/08e7f8412dbd32323ef7
private func createUserToFireAuth(){
guard let email = emailTextField.text else {return}
guard let password = passwordTextField.text else {return}
Auth.auth().createUser(withEmail: email, password: password){(auth, err) in
if let err = err{
print("You cannot create New Tinder Account", err)
return
}
guard let uid = auth?.user.uid else {return}
//新しく追加したのはここで下のsetUserDataToFirestoreの関数と接続されています。
self.setUserDataToFirestore(email:email, uid: uid)
}
}
//MARK:Create&ConnectFromFirebaseAuthToFirestore
private func setUserDataToFirestore(email:String, uid: String){
guard let name = nameTextField.text else {return}
let document = [
"name": name,
"email": email,
"createAt": Timestamp()
] as [String: Any]
Firestore.firestore().collection("users").document(uid).setData(document){ err in
if let err = err{
print("You cannot save your account in FireStore", err)
return
}
print("You success & save your account uid in FireStore")
}
}
コード解説
ViewController.swift
//前回の記事を参考にしてください→https://qiita.com/agachan0930/items/08e7f8412dbd32323ef7
private func createUserToFireAuth(){
guard let email = emailTextField.text else {return}
guard let password = passwordTextField.text else {return}
Auth.auth().createUser(withEmail: email, password: password){(auth, err) in
if let err = err{
print("You cannot create New Tinder Account", err)
return
}
guard let uid = auth?.user.uid else {return}
//新しく追加したのはここで下のsetUserDataToFirestoreの関数と接続されています。
self.setUserDataToFirestore(email:email, uid: uid)
}
}
//MARK:Create&ConnectFromFirebaseAuthToFirestore
private func setUserDataToFirestore(email:String, uid: String){
guard let name = nameTextField.text else {return}
let document = [
"name": name,
"email": email,
"createAt": Timestamp()
] as [String: Any]
Firestore.firestore().collection("users").document(uid).setData(document){ err in
if let err = err{
print("You cannot save your account in FireStore", err)
return
}
print("You success & save your account uid in FireStore")
}
}
Emailの情報とuidの情報をsetUserDataToFirestoreの関数に引き渡す。ここでの返り値はなし。
createUserToFireAuth内
self.setUserDataToFirestore(email:email, uid: uid)
createUserToFireAuthからEmailとuidをString型で受け渡しをする。
//MARK:Create&ConnectFromFirebaseAuthToFirestore
private func setUserDataToFirestore(email:String, uid: String){
//省略
}
辞書型[String:Any]で名前とEmail及び登録した時刻を型に準じてdocumentに格納する。
let document = [
"name": name,
"email": email,
"createAt": Timestamp()
] as [String: Any]
FireStore.firestoreでFirebase全体のデータベースを呼び出す。そのデータベース内の名前(users)に接続をする。
.documentで階層のリストを検索。
.setData(document)で先ほどセットしたデータ(document)を中に埋めこむ。
そしてif関数を用いて登録ができたかどうかを判定する。
Firestore.firestore().collection("users").document(uid).setData(document){ err in
if let err = err{
print("You cannot save your account in FireStore", err)
return
}
print("You success & save your account uid in FireStore")
}
次回
Author And Source
この問題について(FirebaseAuthとFirestoreをuidで繋げる), 我々は、より多くの情報をここで見つけました https://qiita.com/agachan0930/items/2d51469f594cf2046e40著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .