使用Swfit在IOS中进行社交登录

时间:2017-09-15 18:40:48

标签: ios swift facebook socialauth

这是一般性问题,我想要的是如果有人登录我使用Google-Auth / Email-Password登录,我也可以获取Facebook个人资料信息?这些步骤是否正确:

  1. 使用Google登录并在Firebase中插入条目。
  2. 在个人资料编辑中,有一个名为&#34的按钮;获取您的Facebook数据"。
  3. 在FBSDKLoginManager的帮助下点击按钮,我连接用户fb的个人资料并制作FBSDKGraphRequest。
  4. 获得结果后将其保存到数据库。
  5. 如果有可能,建议任何其他方式?!

1 个答案:

答案 0 :(得分:1)

以下是 Xcode 8.3 的工作代码以及 Swift 3.1

按照以下步骤获取Facebook数据: -

第1步:

import FBSDKCoreKit

import FBSDKLoginKit

第2步:符合代表。

FBSDKLoginButtonDelegate

第3步:登录按钮IBAction方法。

// Facebook登录操作

  @IBAction func facebookLoginAction(_ sender: Any) {

        //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(){
        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 id = newResult["id"] as? String ?? ""
                    print("the access token is \(FBSDKAccessToken.current().tokenString)")

                    let accessToken = FBSDKAccessToken.current().tokenString
                    //self.signInUser()

                }
            })
        }
    }

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