Swift Alamofire + OAuth2刷新令牌

时间:2018-04-06 11:23:13

标签: ios swift oauth-2.0 alamofire

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

Alamofire 4 using p2/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) {}

这是实现此目的的正确方法吗?

由于

0 个答案:

没有答案