首页 > 解决方案 > firebase 检索用户 ID 以在 url API 调用中传递它

问题描述

嗨,我对 iOS 开发有点陌生。我想创建一个变量来存储来自 firebase 身份验证检查的 UID = user.id。然后我想用那个 UID 把它放在 url 中,这样我就可以用它来调用我们的后端。但是,我无法弄清楚该怎么做......

Xcode 11.6 快速 5

这是我的快速代码:

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        var UID = ""
        
        Auth.auth().addStateDidChangeListener { (auth, user) in
            if let user = user {
                self.userName.text = user.displayName
                //print(user.uid)
                UID = user.uid
            } else {
                self.userName.text = "error"
                
            }
        }
        
        
        self.navigationItem.setHidesBackButton(true, animated: true)

        
        //let url = vehicleManager.dataURL
        let url = rewardManager.dataURL
        print("UID is: \(UID)")
        rewardManager.performRequest(dataURL: url)
     
        claimWebKitView.load(URLRequest(url: URL(string: "https://camo.githubusercontent.com/6b254aa699df7f9464967009129c3017de721b77/68747470733a2f2f7261772e6769746875622e636f6d2f5068696c4a61792f4d50416e64726f696443686172742f6d61737465722f73637265656e73686f74732f7363617474657263686172742e706e67")!))
        premiumWebKitView.load(URLRequest(url: URL(string: "https://camo.githubusercontent.com/e29d8d3316203700965cc6cc56e67b779f2845bb/68747470733a2f2f7261772e6769746875622e636f6d2f5068696c4a61792f4d5043686172742f6d61737465722f73637265656e73686f74732f636f6d62696e65645f63686172742e706e67")!))
        
        
    }

调试控制台: 在此处输入图像描述

如何将 user.uid 传递给我的网址?谢谢

标签: iosswiftfirebasefirebase-authentication

解决方案


UID打印时没有获得任何价值的原因是因为这auth.addStateChangedListener是一个异步操作,它需要一些时间从 firebase 获取数据,并且在这段时间内,您的其他代码首先被执行。我建议对这些类型的异步操作使用完成处理程序。是 SO question 的链接,您可以从中获得有关完成处理程序的更多详细信息。

快速概述:- 当函数完成执行时,您的完成处理程序会被调用,在该部分,您可以通过检查您是否收到正确的 userId 来进行 api 调用。


推荐阅读