IvはFirebase 2のコードベースをFirebase 3に変換していて、いくつかの問題を抱えていました。特定のデータベース参照でFIRApp.createUserWithEmailを使用するには?
基本的に私はFirebase DBの特定の場所に新しいユーザを作成する方法を見つけようとしています。
ゴール - 私はここでvar _USER_REF = FIRDatabaseReference().child("\(BASE_URL)/users")
@すべての新規ユーザーを保存するには、これまでのコードです。すでにユーザログの内またはレジスタ私はNSDefaultsへの「UID」を保存することを計画した場合NSDefaults
に保存されたUIDを持つユーザーで
class DataService {
static let dataService = DataService()
let BASE_URL = "https://project-1321.firebaseio.com"
var _BASE_REF = FIRDatabaseReference().child(BASE_URL)
var _USER_REF = FIRDatabaseReference().child("\(BASE_URL)/users")
var _NEWS_REF = FIRDatabaseReference().child("\(BASE_URL)/news")
var _MARKET_STATS = FIRDatabaseReference().child("\(BASE_URL)/market")
var CURRENT_USER_REF: FIRDatabaseReference {
let userID = NSUserDefaults.standardUserDefaults().valueForKey("uid") as! String
let currentUser = FIRDatabaseReference().child("\(_BASE_REF)").child("users").child(userID)
//let currentUser = Firebase(url: "\(BASE_REF)").childByAppendingPath("users").childByAppendingPath(userID)
return currentUser
}
func createNewAccount(uid: String, user: Dictionary<String, String>) {
_USER_REF.child(uid).setValue(user)
}
}
View Controller
@IBAction func registerAccount(sender: AnyObject) {
guard let email = self.emailRegField.text where !self.emailRegField.text!.isEmpty else {
return
}
guard let username = self.usernameRegField.text where !self.usernameRegField.text!.isEmpty else {
return
}
guard let password = self.passwordRegField.text where !self.passwordRegField.text!.isEmpty else {
return
}
FIRAuth.auth()?.createUserWithEmail(email, password: password) {
(user, error) in
if error != nil {
print(error)
self.signUpErrorAlert("Alert", message: "There was a problem signing up!")
} else {
let user = ["provider": user?.providerID, "email": email, "username": username]
DataService.createNewAccount(user) // Doesnt Work
}
//Store UID in NSDefaults so if user reopen app they automatically log in if UID exsisits.
NSUserDefaults.standardUserDefaults().setValue(result ["uid"], forKey: "uid")
// Segue New User
self.performSegueWithIdentifier("newUserSegue", sender: nil)
}
// Loggin。
そして、そのように確認してください。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
if NSUserDefaults.standardUserDefaults().valueForKey("uid") != nil {
self.performSegueWithIdentifier("newUserSegue", sender: nil)
} else {
print("User is not registered or has their UID saved to NSDefaults")
}
}
これは安全な方法ですか?
すごい男。ありがとうございました!!私はあなたが言ったようにすべてをやったが、何らかの理由で私のView Controllerで 'createNewAccount'メソッドを使うことができない。画像を見る - http://imgur.com/a/obfR1 – brkr
Nvm 'DataService.dataService.createNewAccount'を追加しなければならなかった – brkr
実際には、UIDをNSUserDefaultsに保存して、後で自動ログインするようにしましたが、理由。何か考えますか?画像を参照してください - http://imgur.com/K8wlylO – brkr