Как аутентифицировать URLRequest с помощью Alamofire с OAuth1 - PullRequest
0 голосов
/ 09 декабря 2018

У меня возникла проблема при попытке аутентификации запроса с использованием 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 или чего-либо еще. Мне просто нужно сгенерировать значение «oauth_signiture», основываясь на URL-адресе запроса и его параметрах, я его сгенерировал, но получил ответ «INVALID_LOGIN_ATTEMPT», и всякий раз, когда я тестирую API наПочтальону это удается, хотя сгенерированный заголовок похож на тот, который я генерирую, пожалуйста, помогите мне или скажите, что я делаю неправильно, большое спасибо.

...