Firebase Facebook登录FIRUserInfo

雌激素

以下代码不适用于:

if let rawProfile = user?.providerData["cachedUserProfile"] as? ......

错误:无法用索引类型“字符串”下标“ [FIRUserInfo]”类型的值

我一直在努力将项目从旧的Firebase控制台/文档更新到新的。

但是,似乎只有在用户注册FIRUserInfo时,某些新内容才允许被拉出,例如displayName,photoURL和email。

知道我将如何运用我以前喜欢的事物(例如性别)吗?

项目清单

    static func createUser(viewController: UIViewController, completion: (success: Bool) -> Void) {
    let ref = FIRDatabase.database().reference()
    let facebookLogin = FBSDKLoginManager()

    facebookLogin.logInWithReadPermissions(["public_profile", "email", "user_friends"], fromViewController: viewController, handler: {(facebookResult, facebookError) -> Void in
        if facebookError != nil {
            print("Facebook login failed. Error \(facebookError)")
            completion(success: false)
        } else if facebookResult.isCancelled {
            print("Facebook login was cancelled.")
            completion(success: false)
        } else {
            let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

            FIRAuth.auth()?.signInWithCredential(credential, completion: { (user, error) in
                if error != nil {
                    print("Login failed. \(error)")
                    completion(success: false)
                } else {
                    if let rawProfile = user?.providerData["cachedUserProfile"] as? [String: AnyObject] {
                        guard let firstName = rawProfile["first_name"] as? String else { return }
                        guard let gender = rawProfile["gender"] as? String else { return }
                        guard let uid = rawProfile["id"] as? String else { return }
                        guard let picture = rawProfile["picture"] as? [String : AnyObject] else { return }
                        guard let data = picture["data"] as? [String : AnyObject] else { return }
                        guard let url = data["url"] as? String else { print("failed in data") ; return }

                        let email = user?.providerData["email"] as! NSString as String

                        let newUser = User(firstName: firstName, gender: gender, email: email, imageURL: url)

                        FirebaseController.base.child("users").child(uid).updateChildValues(newUser.jsonValue)

                        self.currentUserID = uid

编辑越来越近,能够拉出我需要的数据,但不能创建用户...

    static func createUser(viewController: UIViewController, completion: (success: Bool) -> Void) {
    let facebookLogin = FBSDKLoginManager()

    facebookLogin.logInWithReadPermissions(["public_profile", "email", "user_friends"], fromViewController: viewController, handler: {(facebookResult, facebookError) -> Void in
        if facebookError != nil {
            print("Facebook login failed. Error \(facebookError)")
            completion(success: false)
        } else if facebookResult.isCancelled {
            print("Facebook login was cancelled.")
            completion(success: false)
        } else {
            let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

            FIRAuth.auth()?.signInWithCredential(credential, completion: { (user, error) in
                if error != nil {
                    print("Login failed. \(error)")
                    completion(success: false)
                } else {
                    let userDetails = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, first_name, email, gender, picture"])

                    userDetails.startWithCompletionHandler({ (connection, result, error) in
                        if error != nil {
                            print("Error connecting FBSDKGraphRequest")
                        } else if let result = result {
                            guard let firstName = result["first_name"] as? String else {return}
                            guard let gender = result["gender"] as? String else {return}
                            guard let uid = result["id"] as? String else {return}
                            guard let imageURL = result["url"] as? String else {return}
                            guard let email = result["email"] as? String else {return}

                            let newUser = User(firstName: firstName, gender: gender, email: email, imageURL: imageURL)

                            FirebaseController.base.child("users").child(uid).updateChildValues(newUser.jsonValue)
雌激素

经过几个小时的搜索,阅读和升级到最新的Cocoapods,我解决了这个问题。

它是Info.plist设置,json解析和其他一些东西的组合。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过Facebook Firebase简单登录获取电子邮件

来自分类Dev

Facebook应用:Firebase简单登录URL错误

来自分类Dev

使用Firebase登录的Facebook API调用

来自分类Dev

新的Firebase Facebook登录

来自分类Dev

使用Firebase登录Facebook。找不到OAuth重定向URI

来自分类Dev

使用Facebook登录集成(Firebase 3.0)的Firebase Auth用户的空电子邮件字段

来自分类Dev

通过Firebase登录获取更大的Facebook图像

来自分类Dev

Facebook在React-Native和Firebase 3.1中登录

来自分类Dev

Firebase Facebook登录检查用户是否存在

来自分类Dev

使用Ionic登录Firebase Facebook

来自分类Dev

Firebase:请求最近登录

来自分类Dev

用户注销并再次登录后,Firebase Facebook登录错误将您登录到应用程序

来自分类Dev

如何使用Firebase将范围添加到Facebook登录

来自分类Dev

使用Facebook登录到Firebase时出现错误100

来自分类Dev

Firebase:使用令牌登录

来自分类Dev

登录Firebase / Flutter

来自分类Dev

React Native Firebase-Facebook登录

来自分类Dev

使用Firebase与Google登录

来自分类Dev

使用Angular和Google Firebase的Facebook登录失败-URL被阻止

来自分类Dev

Firebase AngularFire Facebook登录没有登录传输可用错误

来自分类Dev

Facebook登录-Firebase V3

来自分类Dev

使用Facebook登录Firebase如何进行隔离

来自分类Dev

Firebase Facebook登录:请求中提供了无效的API密钥

来自分类Dev

使用Firebase登录Facebook。找不到OAuth重定向URI

来自分类Dev

Firebase Facebook登录检查用户是否存在

来自分类Dev

使用Facebook登录到Firebase时出现错误100

来自分类Dev

无法使用Firebase Facebook登录

来自分类Dev

OAuth 登录 Cordova Firebase

来自分类Dev

Firebase Facebook 登录 - 检测用户登录状态并重定向

Related 相关文章

热门标签

归档