Swift 3 Oauth2 Imgur刷新键 - 错误400“无效的grant_type参数或参数缺失”

时间:2017-03-22 14:46:21

标签: swift api oauth nsmutableurlrequest imgur


使用Swift / NSMutableURLRequest调用Imgur API的NSMutableURLRequest端点时出现问题,可能实际上我只是以错误的方式设置请求,因为我没有很多经验access_token
场景:
用户已经对我的应用程序进行了身份验证,他可以将照片发布到他的Imgur帐户
问题:
Imgur需要在28天后重新进行身份验证 这就是为什么在对应用程序进行身份验证后,您会获得(暂时; 28天)refresh_token以及28天后使用的长期access_token来获取新的access_token
我执行以下API调用以检索新的"Invalid grant_type parameter or parameter missing"但始终收到错误:
400,错误代码为if let reqUrl = URL(string: "https://api.imgur.com/oauth2/token?refresh_token=\(refreshKey)&client_id=\(CLIENT_ID)&client_secret=\(IMGUR_SECRET)&grant_type=refresh_token") { let request = NSMutableURLRequest(url: reqUrl) print("request: \(reqUrl)") request.httpMethod = "POST" request.setValue("Client-ID \(CLIENT_ID)", forHTTPHeaderField: "Authorization") request.addValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type") let task = URLSession.shared.dataTask(with: request as URLRequest){ data, response, error in if (error != nil){ print("error: \(error)") return } print("response: \(response!)") let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) print("response string: \(responseString!)") } task.resume() }
这是我的HTTP请求:

refreshKey

CLIENT_IDIMGUR_SECRET@foreach ($tindak as $item) {{ $item['perbaikan_sementara'] }} @endforeach都应该是正确的。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

所以,我这样解决了:

let bodyString = "grant_type=refresh_token&client_secret=\(IMGUR_SECRET)&client_id=\(CLIENT_ID)&refresh_token=\(refreshKey)"

request.httpBody = bodyString.data(using: .utf8)

基本上在请求的正文中设置参数,而不是将它们放在URL中。 希望这也可以帮助别人:)