【发布时间】:2016-02-13 05:59:53
【问题描述】:
我正在使用新的 Lyft API,在“身份验证”部分,它表示要发送访问令牌的请求并显示示例响应,其中包含一个名为“access_token”的密钥。
示例响应
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token": <access_token>,
"token_type":"bearer",
"expires_in":3600,
"scope": "public"
}
然而,当我拨打电话时(是的,ClientID 和 Secret 是正确的,但我无法在此处发布它们)它会返回响应,但访问令牌为 nil。
一如既往地感谢您的帮助!文档链接如下,
API 文档,
https://developer.lyft.com/docs/authentication
func authorize() {
let authString = NSString(format: "%@:@%", clientID, clientSecret)
let authData = authString.dataUsingEncoding(NSUTF8StringEncoding)
let base64String = authData!.base64EncodedDataWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
let url = NSURL(string: "https://api.lyft.com/oauth/token")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "GET"
request.setValue("Basic \(base64String)", forHTTPHeaderField: "Authorization")
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
let dictionary = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)
if let accessToken : String = dictionary["access_token"] as? String {
print(accessToken)
}
}
task.resume()
}
【问题讨论】:
-
如果你调用
base64EncodedStringWithOptions而不是base64EncodedDataWithOptions会发生什么? -
发生了完全相同的事情......虽然我确实从与 Lyft 的支持人员交谈中发现它应该是“POST”而不是“GET”,尽管即使那样我也是没有得到正确的回应。
-
@Echizzle:我也在做同样的集成,你有什么更新吗?
标签: ios api swift2 nsurlsession nsjsonserialization