2017-03-10 27 views
0

在我的登錄頁面上,我可以選擇使用Facebook註冊。當我的自定義按鈕FB用戶點擊運行此代碼將Facebook數據傳輸到Firebase

func handleCustomFBLogin() { 
    FBSDKLoginManager().logIn(withReadPermissions: ["email"], from: self) { (result, err) in 
     if FBSDKAccessToken.current() != nil { 

      print("user is logged in") 

     }else{ 
      print("user is not logged in") 
     } 

     } 

    } 

我想要實現的是,當用戶點擊Facebook的按鈕,他們已經從之前登錄,他們將自動登錄到他們在Firebase上的用戶帳戶。我正在考慮創建一個函數發送一個graphRequest並獲取他們的Facebook帳戶中的電子郵件,因爲這將填充他們的用戶帳戶字段。

但是,如果用戶按下FB按鈕並且他們第一次登錄,我希望能夠在Firebase上爲他們創建用戶帳戶。

回答

0

當然...... Firebase讓你有所收穫。

啓用Facebook登錄到Firebase控制檯。

使用Facebook登錄時,他們會將令牌返回給您。

let credential = FIRFacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) //this goes in your function you created 

然後你只需使用認證作爲火力地堡你通常會做的事:

FIRAuth.auth()?.signIn(with: credential) { (user, error) in 

if let error = error { 
    // ... 
    return 
} 

您可以閱讀更多關於如何做到這一點從以下一個火力地堡的地方​​這個例子取自。

編輯:

當火力已經創建了一個賬戶,您可以使用回調以獲取用戶的UID,並創建你的火力數據庫條目中的用戶。或者你可以得到像這樣當前登錄的用戶:

let user = FIRAuth.auth()?.currentUser 
// The user's ID, unique to the Firebase project. 
// Do NOT use this value to authenticate with your backend server, 
// if you have one. Use getTokenWithCompletion:completion: instead. 
let email = user?.email 
let uid = user?.uid 
let photoURL = user?.photoURL 
+0

嘿感謝您的答覆!我試圖不僅僅對它們進行身份驗證,我試圖將它們添加到我的用戶節點下的Firebase數據庫中,以存儲我的所有用戶。所以基本上,我只是想拉用戶的Facebook信息,並從它創建一個Firebase用戶@Joakim – Otheprogrammer

+0

我明白。看到我更新的答案。一旦你有用戶的uid,你可以添加到你的firebase數據庫用戶節點。如果您使用用戶唯一ID作爲節點ID,這會起作用嗎? – Starlord