質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.84%

  • Swift

    6513questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Firebase

    466questions

    Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

  • Facebook

    389questions

    Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

  • Facebook Graph API

    114questions

    Facebook Graph APIとは Facebookのグラフデータベース用のAPIであり、対応言語はPHP、Perl、ActionScript、JavaScriptなどがあります。

iOSでFacebookログインの実装時に、ユーザーの性別や年齢層を取得したい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 130

imagine

score 30

 前提・実現したいこと

現在、Swift4でiOSアプリの開発をしています。
その中でユーザーの性別や年齢でクエリをかけたい部分があり、ログイン(新規登録)時にその情報をFacebookから取得してきたいと考えています。

 現状

        let loginManager = LoginManager()
        // Facebook へログイン
        loginManager.logIn(readPermissions: [.email, .publicProfile, .userFriends], viewController: self) { result in
            switch result {
            case .success(_, _, let token):

                // Facebook からユーザー情報を取得
                GraphRequest(graphPath: "me", parameters: ["fields":"email,first_name,last_name,gender,picture"]).start { (response, result) in
                    switch result {
                    case .success(let response):

                        let credential = FacebookAuthProvider
                            .credential(withAccessToken: token.authenticationToken)

                        // Firebase への認証
                        Auth.auth().signIn(with: credential) { (user, error) in
                            if let error = error {
                                // error handling
                                print(error.localizedDescription)
//                                AppDelegate.instance().dismissActivityIndicator()

                                let errorAlert = UIAlertController(title: "Oooops", message: "エラーが発生しました。\(error.localizedDescription)", preferredStyle: .alert)
                                let okAction = UIAlertAction(title: "閉じる", style: .default, handler: nil)

                                errorAlert.addAction(okAction)

                                self.present(errorAlert, animated: true, completion: nil)

                                return

                            } else {
                                if let data = response.dictionaryValue {
                                    print("SUCCESS \(data)")
                                }

                            }
                        }
                    case .failed:
                        // error handling
                        print("ERROR OMG\(result)")

                        break
                    }
                }
            case .cancelled: // Facebook へのログインがキャンセルされた           
                break
            case .failed: // Facebook へのログインが失敗した
                break
            }
        }

現状としてましては、Facebook認証によってFirebaseAuthの認証をすることはできていて、以下のようなコールバックも確認できています。しかし、genderの取得ができない(nil)状態です。

["picture": {
    data =     {
        height = 50;
        "is_silhouette" = 0;
        url = "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=2091500631114271&height=50&width=50&ext=1529754550&hash=◯◯◯";
        width = 50;
    };
}, "last_name": ◯◯◯, "email": ◯◯◯, "id": ◯◯◯, "first_name": ◯◯◯]

 試したこと

調べてみると、genderなどの情報を取得するためにはFacebookに申請が必要なそうですが、アカウントが開発者アカウントな場合はそれはまだ必要ないのだと認識しています。

 補足情報(FW/ツールのバージョンなど)

Swift4, Firestore, FirebaseAuth などを使用しています。
Facebook関連のライブラリはcocoapodsで入れました。

   # Facebook
   pod 'FacebookCore'
   pod 'FacebookLogin'
   pod 'FacebookShare'

これまでにiOSアプリケーションなどにおいて、Facebook認証時に性別や年齢などの情報を取得した経験のあるかたがいらっしゃしましたら、ご助言をいただければと思います。

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Swift

    6513questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • Firebase

    466questions

    Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

  • Facebook

    389questions

    Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

  • Facebook Graph API

    114questions

    Facebook Graph APIとは Facebookのグラフデータベース用のAPIであり、対応言語はPHP、Perl、ActionScript、JavaScriptなどがあります。