gpt4 book ai didi

swift - 将带有完成处理程序的 Firebase IdToken 添加到每个 AlamoFire 请求

转载 作者:可可西里 更新时间:2023-11-01 01:07:30 26 4
gpt4 key购买 nike

我了解如何添加客户 HTTP 请求 header ,例如授权 token 、like this SO Question

我的复杂之处在于使用 Firebase API 获取不记名 token ,因为它在不记名 token 过期时有一个完成处理程序,刷新 token 用于尝试获取新的不记名 token :

static func getIdToken(completion: @escaping (String?, Error?) -> Swift.Void) {
guard let user = Auth.auth().currentUser else {
print("No Firebase User!")
completion(nil, nil)
return
}

user.getIDToken { (idToken, error) in
if(error != nil ) {
print("AuthUtiltiy, error retrieving token: \(error!.localizedDescription)")
completion(nil, error)
return
}

completion(idToken, nil);
}
}

我已经开始围绕 AlamoFire SessionManager 进行抽象,我可以在其中添加额外的 HTTP 请求 header : 类 LibraryAPI: NSObject {

private var manager = Alamofire.SessionManager.default

// Setups the cookie and shared instance
override init() {
let defaultHeaders = manager.session.configuration.httpAdditionalHeaders ?? [:]
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = defaultHeaders
manager = Alamofire.SessionManager(configuration: configuration)
}

但由于 Firebase getIdToken 调用中的回调/完成处理程序,我无法在抽象初始化中为每个请求添加身份验证 token 。

我也尝试使用 AlamoFire 结束我的实际 HTTP 请求,但我仍然遇到同样的问题。

我认为我不能使用RequestAdapterintroduced in AlamoFire 4.0 ,也是因为相同的 Firebase.getIdToken 回调/完成处理程序。

最佳答案

正如您所指出的,由于 RequestAdapter 是同步的,因此在 Alamofire 4 中没有简单的方法来支持这一点。但是,在 Alamofire 5(目前处于测试阶段)中,RequestAdapter 已更新为异步,原因正是此处发布的原因。如果可以的话,更新将是优雅地支持这种情况的最简单方法。

关于swift - 将带有完成处理程序的 Firebase IdToken 添加到每个 AlamoFire 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54846168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com