2017-09-15 68 views
1

这是一般性问题,我想要什么如果有人在我使用Google-Auth/Email-Password登录时登录,并且我可以获取它的Facebook个人资料信息?这些步骤是否正确:使用Swfit在iOS中进行社交登录

  1. 使用谷歌登录名并在Firebase中插入条目。
  2. 在配置文件编辑有一个名为“Get Your Facebook Data”的按钮。
  3. 在FBSDKLoginManager的帮助下点击按钮,我连接到用户fb的配置文件并创建FBSDKGraphRequest。
  4. 获取结果后,将其保存到数据库。

如果可能,建议其他方式?!

+0

您是否正确获取社交数据? –

+0

是的我正确地得到它,但我怀疑它是否会创建两个会话? –

+0

为什么你需要两个不同的会话 –

回答

0

在这里与夫特3.1沿工作的代码的Xcode 8.3

按照这些步骤获得的Facebook数据: -

步骤1:

import FBSDKCoreKit 

import FBSDKLoginKit 

步骤2:符合委托。

FBSDKLoginButtonDelegate 

步骤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() 
       } 
      }) 
     } 
    } 

随时对此发表评论,希望能解决您的问题。谢谢