ios - 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 传递给我的网址?谢谢
解决方案
UID
打印时没有获得任何价值的原因是因为这auth.addStateChangedListener
是一个异步操作,它需要一些时间从 firebase 获取数据,并且在这段时间内,您的其他代码首先被执行。我建议对这些类型的异步操作使用完成处理程序。这是 SO question 的链接,您可以从中获得有关完成处理程序的更多详细信息。
快速概述:- 当函数完成执行时,您的完成处理程序会被调用,在该部分,您可以通过检查您是否收到正确的 userId 来进行 api 调用。
推荐阅读
- django - Django all auth facebook login with Use Strict Mode for Redirect URIs
- python - Python Flask:后台发生了什么以及如何只调用一次函数?
- r - R:“参数长度为 0”(空图)
- html - HTML 表单 POST 方法将“+”作为 %2B,将“=”作为 %3D。如何获得原始的“+”和“=”符号?
- machine-learning - 写出Tif时将RasterFrameLayer转换为Raster时如何修复NPE?
- netsuite - NetSuite:为什么?库存分类帐不等于资产负债表和/或总帐的库存帐户余额
- excel - 获取多列的联合计数 - Excel
- ios - 主应用程序和扩展程序中的多个托管对象上下文
- javascript - 在 reactjs 中过滤 api 数据
- php - 仅在 WooCommerce 前端中使用 gettext 过滤器进行字符串翻译