2017-09-15 1 views
1

これは一般的な質問です。私はそれが欲しいです。誰かが私のGoogle Auth/Email-Passwordログインを使用してログインしても、Facebookのプロフィール情報も取得できますか?これらの手順は正しいですか:Swfitを使用したIOSのソーシャルログイン

  1. GoogleでログインしてFirebaseに入力してください。
  2. オンプロファイル編集には、「あなたのFacebookデータを取得する」ボタンがあります。
  3. FBSDKLoginManagerのボタンをクリックすると、私はユーザーfbのプロファイルに接続し、FBSDKGraphRequestを作成します。
  4. 結果を取得した後、データベースに保存します。

可能であれば、他の方法をお勧めしますか?ここで

+0

あなたは社会的データを正しく取得していますか? –

+0

はい私は正しく取得していますが、セッションが2つ作成されるかどうかは疑問です。 –

+0

なぜ2つの異なるセッションが必要です –

答えて

0

スウィフト3.1とともにのXcode 8.3のコードを働いている:

は、Facebookのデータを取得するには、次の手順を実行します -

ステップ1:

import FBSDKCoreKit 

import FBSDKLoginKit 

ステップ2:デリゲートに準拠します。

ステップ3:ログインボタンIBActionメソッド。

// Facebookログインアクション

@IBAction func facebookLoginAction(_ sender: Any) { 

     //Check Internet connection 
     guard InternetAvailable() else {return} 

     //Fb login process 
     let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 
     fbLoginManager.loginBehavior = .native 

     fbLoginManager.logOut() 
     fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in 
      if (error == nil){ 
       let fbloginresult : FBSDKLoginManagerLoginResult = result! 
       if fbloginresult.isCancelled { 

       } 
       else if (fbloginresult.declinedPermissions != nil){ 
        if(fbloginresult.grantedPermissions.contains("email")) { 
         self.getFBUserData() 
        } 
       } 

      } 
     } 

    } 

ステップ4:方法以下のFacebookのデータを取得します。

func getFBUserData(){ 
     //Showing activity indicator 
     HUD.flash(.image(UIImage.gif(name: "App-Loader")), delay: 100.0) 
     if((FBSDKAccessToken.current()) != nil){ 
      FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"first_name, last_name,email, picture.type(large),gender"]).start(completionHandler: { (connection, result, error) -> Void in 
       if (error == nil){ 
        let newResult = result as AnyObject 
        let email = newResult["email"] as? String ?? "" 
        print("Your Email = \(email)") 
        let firstName = newResult["first_name"] as? String ?? "" 
        let lastName = newResult["last_name"] as? String ?? "" 
        print(FBSDKAccessToken.current()) 
        let gender = newResult["gender"] as? String ?? "" 
        let sex = (gender == "male" ? HCConstants.Gender.MALE : HCConstants.Gender.FEMALE).description 
        let id = newResult["id"] as? String ?? "" 
        print("the access token is \(FBSDKAccessToken.current().tokenString)") 

        let accessToken = FBSDKAccessToken.current().tokenString 
        self.signInUser() 
        //Hid PKHUD 
        HUD.hide() 
       } 
      }) 
     } 
    } 

このコメントはお気軽にご利用ください。ありがとう

関連する問題