2016-06-02 4 views
2

방금 ​​Parse에서 Firebase로 이동했지만 구조는 잘 모릅니다.사용자의 Facebook에서 Firebase로 데이터를 추가하는 방법

저는 Facebook 인증을 사용하여 간단한 앱을 개발하고 있습니다.

나는 성, 이름, 사진, 성별,이 데이터를 그래프 요청을 통해 enter image description here

지금 내가 얻을, 추가 데이터를 추가 할 내 데이터베이스에 새 권한이있는 사용자를 추가하는 방법을 이해 기타

import UIKit 
import FBSDKShareKit 
import FirebaseDatabase 
import FirebaseAuth 

class Settings: UIViewController { 

    @IBOutlet weak var UserImage: UIImageView! 
    @IBOutlet weak var UserName: UILabel! 
    @IBOutlet weak var UserSurname: UILabel! 
    @IBOutlet weak var Gender: UILabel! 



    override func viewDidLoad() { 
     super.viewDidLoad() 


     let paramets = ["fields": "email, first_name, last_name, picture.type(large), gender"] 

     let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: paramets) 

     graphRequest.startWithCompletionHandler({ 

      (connection, result, error) -> Void in 

      if error != nil { 
       print (error) 
      } 

      if let first_name = result["first_name"] as? String { 

       self.UserName.text = first_name 

      } 

      if let last_name = result["last_name"] as? String { 

       self.UserSurname.text = last_name 

      } 

      if let picture = result["picture"] as? NSDictionary, data = picture["data"] as? NSDictionary, url = data["url"] as? String { 

       print(url) 

      } 

      if let gender = result["gender"] as? String { 

       self.Gender.text = gender 

      } 



     }) 
    } 

이 데이터를 데이터베이스에 추가하려면 어떻게해야합니까? 예를 들어 Persons라는 새로운 클래스를 만들어야합니까? 아니면 그 클래스를 사용할 수 있습니까? 저는 인증을 받았습니까?

답변

2

인증 클래스는 데이터를 보유하도록 설계되지 않았습니다. 읽기 전용이며 인증 자격 증명을 포함합니다. uid 등

사용자 노드에 대한 좋은 출발점은 사용자에 대한 데이터를 저장하는 전형적인 장소입니다.

Firebase와 상호 작용하는 데는 여러 가지 방법이 있습니다. Parse와 같은 기존 객체가 없다는 것을 명심하십시오. 따라서 Firebase에 '수동으로'데이터를 쓰거나 그 중 일부를 처리 할 클래스를 생성 할 수 있습니다.

간단한 예제 : 사용자가 firebase 계정을 만든 다음 사용자가 다른 정보를 캡처 할 수있는 대화 상자가 표시된다고 가정 해보십시오. 그런 다음/users 노드에 저장하려고합니다. 에서

let thisUserRef = usersRef.childByAppendingPath(uid) 
let thisUserName = thisUserRef.childByAppendingPath("user_name") 
let their_name = myUserNameTextField.StringValue 
thisUserName.setValue(their_name) 

결과 ... 이미 중포 기지 키합니다 (authData.uid가) 너무 기존의 노드에 자신의 이름을 추가 할 수 있다고 가정 :

uid_x 
    user_name: "whatever their name is" 

당신이 공간을 탐험하고 싶다면,

uid_x 
first: "the first name" 
gender: "gender" 
last: "the last name" 
0

let first_name = firstNameTextField.StringValue 
let last_name = lastNameTextField.StringValue 
let gender = myGenderTextField.StringValue 
let user_info = ["first": first_name, "last": last_name, "gender": gender] 
let thisUserRef = usersRef.childByAppendingPath(uid) 
thisUserRef.setValue(user_info) 

결과를 사전을 구축하고 동시에 아이들의 무리를 쓰기

이제 정말로 기분을 좋게하려면 무거운 물건을 다루는 수업을 만드십시오. 게시물을 처리하는 데 사용할 수있는 PostClass가 있습니다.

import Cocoa 
import Firebase 

class PostClass: NSObject { 

var firebaseKey : String? 
var postText: String? 
var uid: String? 

func savePost() { 

    let rootRef = Firebase(url:"https://your-app.firebaseio.com") 
    let postsRef = rootRef.childByAppendingPath("posts") 

    var dataDict = [String:String]() 
    dataDict["msg"] = self.postText 
    dataDict["uid"] = self.uid 

    if firebaseKey != nil { 
     let thisPostRef = postsRef.childByAppendingPath(firebaseKey) 
     thisPostRef.updateChildValues(dataDict) 
     //update existing node 
    } else { 
     //create new node 
     let thisPostRef = postsRef.childByAutoId() 
     thisPostRef.setValue(dataDict) 
    } 
} 

다음 중 하나에하는 새 게시물을 작성하거나 기존 하나를 업데이트, 그것은 매우 개체의 같은 :

let aPost = PostClass() 
    aPost.postText = "Some post" 
    aPost.uid = "my user id" 
    aPost.savePost() 
관련 문제