回答が遅くなったので、すでにご解決されているかもしれませんが。。
同じ悩みを解決できたので、共有いたします。
swift
1if let facebookUid = FIRAuth.auth()?.currentUser?.providerData
2 .filter({ (userInfo: FIRUserInfo) in return userInfo.providerID == FIRFacebookAuthProviderID})
3 .map({ (userInfo: FIRUserInfo) in return userInfo.uid})
4 .first {
5 print ("\(facebookUid)")
6}
providerDataでFIRUserInfoの配列で取得できるので、その中にあるproviderIDが"facebook.com"(FIRFacebookAuthProviderID)である物を絞りました。
FIRUserInfoのuidにFacebookのIDが入っていました(^o^)
===以下、最初の回答===
Firebase Authでは、facebook以外にもtwitterなどのSNS認証や、メールアドレスでも認証可能になっています。
なので、FIRAuthで取得できるuidは、Firebaseで採番しているユーザーIDとなります。
(このIDはFirebaseのAuthのコンソールで確認できるユーザーUIDです。)
試されたコードから推察するに、SwiftでFirebaseを利用されているものと思います。
SwiftでFacebook認証しているのであれば、
FBSDKライブラリを利用してログインボタンを設置しているのではないかと思いますが、
FacebookのユーザーIDは、FBSDKライブラリを使って取得することが出来ます。
以下はサンプルコードです。
(Xcode8のswift3.0で試しましたので、バージョン違いの場合はコードを修正してください。)
swift
1let req = FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id,email,gender,link,locale,name,timezone,updated_time,verified,last_name,first_name,middle_name"])
2req?.start(completionHandler: { (conn: FBSDKGraphRequestConnection?, result: Any?, error: Error?) in
3 if let error = error {
4 print("\(error.localizedDescription)")
5 return
6 }
7 guard let dictionary = result as! NSDictionary? else {return}
8 guard let facebookUid = dictionary["id"] as? String else {return}
9 print("facebook uid: \(facebookUid)")
10})
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/29 12:04
2016/09/29 14:21
2016/09/29 15:25