前提・実現したいこと
現在、Swift4でiOSアプリの開発をしています。
その中でユーザーの性別や年齢でクエリをかけたい部分があり、ログイン(新規登録)時にその情報をFacebookから取得してきたいと考えています。
現状
swift
1 2 let loginManager = LoginManager() 3 // Facebook へログイン 4 loginManager.logIn(readPermissions: [.email, .publicProfile, .userFriends], viewController: self) { result in 5 switch result { 6 case .success(_, _, let token): 7 8 // Facebook からユーザー情報を取得 9 GraphRequest(graphPath: "me", parameters: ["fields":"email,first_name,last_name,gender,picture"]).start { (response, result) in 10 switch result { 11 case .success(let response): 12 13 let credential = FacebookAuthProvider 14 .credential(withAccessToken: token.authenticationToken) 15 16 // Firebase への認証 17 Auth.auth().signIn(with: credential) { (user, error) in 18 if let error = error { 19 // error handling 20 print(error.localizedDescription) 21// AppDelegate.instance().dismissActivityIndicator() 22 23 let errorAlert = UIAlertController(title: "Oooops", message: "エラーが発生しました。(error.localizedDescription)", preferredStyle: .alert) 24 let okAction = UIAlertAction(title: "閉じる", style: .default, handler: nil) 25 26 errorAlert.addAction(okAction) 27 28 self.present(errorAlert, animated: true, completion: nil) 29 30 return 31 32 } else { 33 if let data = response.dictionaryValue { 34 print("SUCCESS (data)") 35 } 36 37 } 38 } 39 case .failed: 40 // error handling 41 print("ERROR OMG(result)") 42 43 break 44 } 45 } 46 case .cancelled: // Facebook へのログインがキャンセルされた 47 break 48 case .failed: // Facebook へのログインが失敗した 49 break 50 } 51 } 52
現状としてましては、Facebook認証によってFirebaseAuthの認証をすることはできていて、以下のようなコールバックも確認できています。しかし、genderの取得ができない(nil)状態です。
Swift
1 2 3["picture": { 4 data = { 5 height = 50; 6 "is_silhouette" = 0; 7 url = "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=2091500631114271&height=50&width=50&ext=1529754550&hash=◯◯◯"; 8 width = 50; 9 }; 10}, "last_name": ◯◯◯, "email": ◯◯◯, "id": ◯◯◯, "first_name": ◯◯◯] 11 12 13
試したこと
調べてみると、genderなどの情報を取得するためにはFacebookに申請が必要なそうですが、アカウントが開発者アカウントな場合はそれはまだ必要ないのだと認識しています。
補足情報(FW/ツールのバージョンなど)
Swift4, Firestore, FirebaseAuth などを使用しています。
Facebook関連のライブラリはcocoapodsで入れました。
ruby
1 # Facebook 2 pod 'FacebookCore' 3 pod 'FacebookLogin' 4 pod 'FacebookShare'
これまでにiOSアプリケーションなどにおいて、Facebook認証時に性別や年齢などの情報を取得した経験のあるかたがいらっしゃしましたら、ご助言をいただければと思います。
よろしくお願いします。
あなたの回答
tips
プレビュー