首页 > 解决方案 > 如何使用带有 OAuth1 的 Alamofire 验证 URLRequest

问题描述

我在尝试使用 alamofire 和 OAuth1 对请求进行身份验证时遇到问题,我正在使用这个库来执行此操作: https ://github.com/phenemann/Authentication/ 但如果您知道如何使用 alamofire,我将无法成功使用 OAuth1。

贝娄是我到现在为止的进步

class HttpRestManager{
public static func sendRequest(url: String, authorizationType: AuthorizationType, method: HTTPMethod, parameters: [String: Any]?, headers: NSMutableDictionary, complition: @escaping (_ results: String?, _ errors: Error?, _ statusCode: Int?) -> Void){
    let preparedHeaders = prepareHeaders(headers: headers, authorizationType: authorizationType)
    let manager = Alamofire.SessionManager.default
    manager.session.configuration.timeoutIntervalForRequest = 10
    manager.adapter = AuthorizationAdapter()
    manager.request(url, method: method, parameters: parameters, encoding: JSONEncoding.default, headers: preparedHeaders).responseString { (response) in
        switch response.result{
        case .success(let value):
            complition(value, nil, response.response?.statusCode)
        case .failure(let error):
            complition(nil, error, response.response?.statusCode)
        }
    }
}
}

这是我正在使用的适配器:

class AuthorizationAdapter: RequestAdapter {
private let CONSUMER_KEY = "****";
private let CONSUMER_SECRET = "****";
private let TOKEN_ID = "****";
private let TOKEN_SECRET = "****";

func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
    let oAuthMethod = AuthenticationMethod.oauth1(consumerKey: CONSUMER_KEY,
                                                  consumerSecret: CONSUMER_SECRET,
                                                  accessKey: TOKEN_ID,
                                                  accessSecret: TOKEN_SECRET)
    let authorizer = Authenticator(method: oAuthMethod)
    let authorizedRequest = try? authorizer.signRequest(request: urlRequest)
    return authorizedRequest!
}
}

请注意,我有 ConsumerKey、ConsumerSecret、TokenID 和 TokenSecret 没有 CallBackUrl 或任何东西我只需要根据请求 URL 及其参数生成“oauth_signiture”值,我已经生成它但我得到的响应是“ INVALID_LOGIN_ATTEMPT”,每当我在 Postman 上测试 API 时,即使生成的标头与我生成的标头相似,它也会成功,请帮助我或告诉我我做错了什么,非常感谢。

标签: iosswiftauthenticationalamofireoauth-1.0a

解决方案


推荐阅读