Swift Alamofire + OAuth2 刷新令牌

use*_*436 6 ios oauth-2.0 swift alamofire

目前正在学习如何通过 Alamofire 添加 OAuth2 并感到困惑。我正在使用密码授予类型,当请求失败时,我知道重试器启动并请求令牌刷新。令人困惑的部分是我使用哪个?

Alamofire 4 使用 p2/OAuth2

Alamofire RequestRetrier + 请求适配器

第一个使用较少的代码,因此不确定它是否具有我需要的所有功能。我也找不到解释这个过程的具体例子。

我相信以下执行刷新请求?

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
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将其传递回以适应先前的请求?

func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) {}
Run Code Online (Sandbox Code Playgroud)

这是实现这一点的正确方法吗?

谢谢