目前正在学习如何通过Alamofire添加OAuth2并感到困惑。我使用密码授予类型,当请求失败时,我知道反向启动并请求令牌刷新。令人困惑的部分是我使用哪一个?
Alamofire RequestRetrier + Request Adapter
第一个使用较少的代码,因此不确定它是否需要我的所有功能。我也找不到解释这个过程的具体例子。
我相信以下内容会执行刷新请求吗?
private func refreshTokens(completion: RefreshCompletion) {
guard !isRefreshing else { return }
isRefreshing = true
let urlString = "\(baseURLString)/oauth2/token"
let parameters: [String: Any] = [
"access_token": accessToken,
"refresh_token": refreshToken,
"client_id": clientID,
"grant_type": "refresh_token"
]
sessionManager.request(urlString, withMethod: .post, parameters: parameters, encoding: .json).responseJSON { [weak self] response in
guard let strongSelf = self else { return }
if let json = response.result.value as? [String: String] {
completion(true, json["access_token"], json["refresh_token"])
} else {
completion(false, nil, nil)
}
strongSelf.isRefreshing = false
}
}
然后将其传回以适应之前的请求?
func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) {}
这是实现此目的的正确方法吗?
由于