哪里有GID didSignInFor实际已经签署了用户?

问题描述 投票:0回答:1

我正在尝试将用户图片保存到Firebase存储,检索它的downloadUrland将它全部保存到CoreData。我打电话给上传功能,在它完成后我称之为CoreDatasaving功能。除了一个小细节外,我完全正常工作:如果我从GID didSignInFor调用它,则用户无权写入storageyet因为没有登录,所以它失败了。我已经尝试调用我执行segue的函数,认为登录过程中已完成并且我有权写入Storagebut它没有看到user。所以我试着在最后调用它,但结果却没有得到许可。你能发现我在didSignInFor的错误吗?您可以通过注释掉的代码查看我的尝试。非常感谢一如既往。这是方法:

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
        // ...
        print("User successfully signed in with Google",user)
        guard let idToken = user.authentication.idToken else {return}
        guard let accessToken = user.authentication.accessToken else {return}
        let credentials = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)
        Auth.auth().signInAndRetrieveData(with: credentials) { (user, error) in
            if let error = error {
                print("Failed to create user with Google account", error)
                return
            } else {

                // here user in not accessible yet

                print("Succesfully created new user in Firebase with Google account")
                self.performSegue(withIdentifier: "continueSegue", sender: self)
            }
        }
        // user details
        UserDetails.shopId = user.userID
        UserDetails.fullName = user.profile.name
        UserDetails.givenName = user.profile.givenName
        UserDetails.familyName = user.profile.familyName
        UserDetails.email = user.profile.email

        if user.profile.hasImage {
//            UserDetails.logoUrl = String(describing: user.profile.imageURL(withDimension: 100)) // String // wrong.. use the downloadUrl from Firabase Storage
            let data = try? Data(contentsOf: user.profile.imageURL(withDimension: 100))

            if let imageData = data {
                UserDetails.logo = UIImage(data: imageData)


//                // Post image to Firebase Storage here it fails at first sign in because of storage rules
//                Firebase.uploadImage(completed: { (true) in
//                    // Save user to CoreData
//                    User.saveUserDetails(shopId: UserDetails.shopId!, name: UserDetails.fullName!, address: UserDetails.address ?? "", phoneNumber: UserDetails.phoneNumber ?? "", latitude: UserDetails.latitude ?? "", longitute: UserDetails.longitude ?? "", logo: UserDetails.logo!, logoUrl: UserDetails.logoUrl!)
//                }, UserDetails.logo!)


            }
ios swift google-signin
1个回答
0
投票

我决定在以下vc的viewWillAppear上传。它现在按照需要工作。

© www.soinside.com 2019 - 2024. All rights reserved.