ios - 尝试使用 Alamofire 4 和 OAuth2 发出 POST 请求时出错 - Swift

标签 ios swift post http-headers alamofire

我正在将 Reddit 的 API 集成到我的 iOS 应用程序中,但是我的 POST 请求不起作用,并且我正在使用仅应用程序 OAuth 方法,如 here 所示。 。我正在我的 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;
}

我已经查找了 CredStore 查询错误,很多其他人也遇到了这个错误,我认为这是请求处理方面的 Alamofire 问题。我已在我的 Info.plist 中允许任意加载。正如你所看到的,我也收到了 401 错误,它一定是我的 header ,但我被卡住了。

最佳答案

已修复:在我的 Base64 编码中忘记了冒号...

关于ios - 尝试使用 Alamofire 4 和 OAuth2 发出 POST 请求时出错 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50360340/

相关文章:

ios - 单击 uitableviewcell 时显示更多行

iphone - 在 iOS4.3 和 iOS 5 的 phonegap 中暂停和恢复听众不工作

ios - 我应该在播放列表实体中使用什么删除规则?

ios - Storyboard中的自定义 tableViewCell 在 iOS8.1 中失去了它的自动布局约束

swift - 使用 NSPredicate 对 TableView 中的核心数据进行排序(Swift)

swift - 顶级 Bool 编码为数字属性列表片段。属性列表编码器

ios - 谷歌应用引擎。 Google 应用引擎将 POST 请求视为 GET

android - android中如何实现异步http-post请求?

json - 如何在 swift 中使用 NSURLSession 发布 JSON 数据

iOS:多个 AU 与一个渲染回调中的所有内容