Ошибка при попытке сделать POST-запрос с Alamofire 4 и OAuth2 - Swift - PullRequest
0 голосов
/ 16 мая 2018

Я интегрирую API Reddit в свое приложение iOS, однако мой POST-запрос не работает, и я использую метод OAuth только для приложений, как показано здесь .Я делаю все в моем AppDelegate классе.Я использую Alamofire для выполнения запросов.

open func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    if url.scheme == "APP_SCHEME" {
        let queryParams = url.query?.components(separatedBy: "&")
        var codeParam = (queryParams! as NSArray).filtered(using: NSPredicate(format: "SELF BEGINSWITH %@", "code="))
        let codeQuery = codeParam[0] as? String
        if let code = codeQuery?.replacingOccurrences(of: "code=", with: "") {
            print("My code is \(code)")

            guard let url = URL(string: "https://www.reddit.com/api/v1/access_token") else { return false }
            let params: Parameters = [
                "grant_type" : "https://oauth.reddit.com/grants/installed_client",
                "device_id" : "\(UUID().uuidString)"]

            let username = "MY_CLIENT_ID"
            let password = ""
            let loginString = String(format: "%@%@", username, password)
            let loginData = loginString.data(using: String.Encoding.utf8)! as NSData
            let base64EncodedString = loginData.base64EncodedString()

            let headers = ["Authorization": "Basic \(base64EncodedString)"]

            Alamofire.request(url, method: .post , parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
                print(response)
            }
        }
        return true
    }
    return false
}

Всякий раз, когда я запускаю свое приложение, авторизируюсь через Reddit и перенаправляю к моему приложению, моя консоль выводит

   CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = htps;
    "r_Attributes" = 1;
    sdmn = reddit;
    srvr = "www.reddit.com";
    sync = syna;
}
SUCCESS: {
    error = 401;
    message = Unauthorized;
}

IЯ искал ошибку в запросе CredStore, и у многих других она есть, я думаю, что это проблема Alamofire с обработкой запросов.Я разрешил Арбитражные Нагрузки в моем Info.plist.Как вы видите, я также получаю ошибку 401, это должен быть мой заголовок, но я застрял.

1 Ответ

0 голосов
/ 16 мая 2018

ИСПРАВЛЕНО: забыл двоеточие в моей кодировке base64 ...

...