ios - 尝试使用 Alamofire 4 和 OAuth2 发出 POST 请求时出错 - Swift
问题描述
我正在将 Reddit 的 API 集成到我的 iOS 应用程序中,但是我的 POST 请求不起作用,并且我使用的是 Application Only 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;
}
我查看了 CredStore 查询错误,并且很多其他人都遇到了它,我认为这是请求处理的 Alamofire 问题。我已经在我的Info.plist
. 如您所见,我也收到 401 错误,它一定是我的标题,但我被卡住了。
解决方案
修复:在我的 base64 编码中忘记了冒号...
推荐阅读
- excel - 用另一个引用替换列值
- delphi - 如何有效地等待文件解锁?
- c# - HtmlDocument.Save (HtmlAgilityPack) 输出不完整的文档
- excel - 使用按钮和 OnClick 事件将信息从 UserFrom 传递到另一个子/功能/模块
- linux - 在 bash 脚本 (Linux) 中从 maven POM 读取属性
- blazor - 覆盖 Blazor razor 文件中的生命周期挂钩
- mysql - 通过kafka jdbc连接器删除数据库中的记录
- visual-studio-code - vscode 终端中不显示表情符号
- python - python re.sub替换匹配字符串中的数字
- mysql - 如何返回实体数据以及相关实体