在Facebook SDK初始化之前无法启动FBSDKGraphRequestConnection

时间:2020-06-26 01:28:56

标签: swift google-cloud-firestore facebook-login

快速制作一个应用程序,以便用户可以使用Facebook登录到Firebase,我想获取该应用程序的用户电子邮件,名字和个人资料图片,但是当我单击Facebook登录按钮时,我得到了错误:“在初始化Facebook SDK之前无法启动FBSDKGraphRequestConnection”,我不确定是什么问题。这是我使用的代码:

func loginButtonDidLogOut(_ loginButton:FBLoginButton){

}

func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?) {
    guard let token = result?.token?.tokenString else {
        print("user failed to login with facebook")
        return
    }

    let facebookRequest = FBSDKLoginKit.GraphRequest(graphPath: "me",
                                                     parameters: ["fields": "email, first_name, picture.type(large)"],
                                                     tokenString: token,
                                                     version: nil,
                                                     httpMethod: .get)

    facebookRequest.start(completionHandler: { _, result, error in
        guard let result = result as? [String: Any],
            error == nil else {
                print("Failed to make facebook graph request - \(error)")
                return
        }
        print(result)
        return


        guard let firstName = result["first_name"] as? String,
            let email = result["email"] as? String else {
                print("Failed to get email and name from fb result")
                return
        }
    })




    let credential = FacebookAuthProvider.credential(withAccessToken: token)

    FirebaseAuth.Auth.auth().signIn(with: credential) { [weak self] authResult, error in
        guard let strongSelf = self else {
            return
        }
        guard authResult == nil, error == nil else {
            if let error = error {
                print("facebook credential login failed, MFA may be needed - \(error)")
            }
            
            return
        }


        print("successfully logged user in")
        strongSelf.transitionToSetUp()
    }

}

}

当然,还可以将按钮设置为在viewdidload()中查看。

任何帮助都会很棒!

0 个答案:

没有答案