2017-03-10 15 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のログインを有効にします。

Facebookでログインすると、トークンが返されます。

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

そして、あなたが通常行うように、あなただけのFirebaseを使用して認証:

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

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

あなたは、この例では、から取られFirebaseから​​以下これを行う方法についての詳細を読むことができます。

編集:

firebaseは、ユーザーのUIDを取得し、あなたのfirebaseデータベースにエントリを作成するには、コールバックを使用することができ、ユーザーのアカウントを作成しました。または現在ログインしているユーザーを次のように取得することができます:

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

関連する問題