微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

斯威夫特 5.1要保存在 Firebase 存储中的外部 URL即 facebook 个人资料图片

如何解决斯威夫特 5.1要保存在 Firebase 存储中的外部 URL即 facebook 个人资料图片

我使用“FBSDKLoginKit.GraphRequest”获得了 facebook 结果,它返回一个名为“result”的字典,其中包含用户名、电子邮件和个人资料图片。我已经让 Firebase Firestore 正常工作,但 Facebook 个人资料图片的 URL 没有保存到 Firebase 存储中。 ** 如果 URL 打印在控制台中,如果我将其复制并粘贴到浏览器中,它就可以工作。 这是我的代码

// facebook GraphRequest and result
     let facebookRequest = FBSDKLoginKit.GraphRequest(graPHPath: "me",parameters: ["fields": 
     "email,name,picture.type(large)"],tokenString: token,version: nil,httpMethod: .get)
        facebookRequest.start { [weak self] (_,result,error) in
            guard let strongSelf = self else {return}
            guard let result = result as? [String : Any],error == nil else {
                return
            }

            guard let username = result["name"] as? String,let userEmail = result["email"] as? 
     String,let fbPicData = result["picture"] as? [String:Any],let data = fbPicData["data"] 
     as? [String:Any],let fbAvatar = data["url"] as? String  else {
                return
            }


// Firebase STORAGE and URL ( fbAvatar is the constant that has the url needed)
// The code below this line is where this issue lays.
let storageRef = Storage.storage().reference(forURL: "STORAGE NAME")
                    let storageProfileRef = storageRef.child("STORAGE NAME")
                    guard let url = URL(string: fbAvatar) else {
                        return
     }
                    print("Downloading url image from facebook")
                    URLSession.shared.dataTask(with: url,completionHandler: {data,_,_ in
                        guard let data = data else {return}
                        storageProfileRef.putData(data)
                        if error != nil {
                            return
                        }
                    })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。