iOS缺少grant_type

时间:2014-10-25 18:00:46

标签: ios http post oauth

我第一次尝试请求访问令牌时遇到{“error_description”:“缺少grant_type参数值”,“错误”:“invalid_request”}。我的代码如下:

let params : [String : String] =
    ["client_id" : clientID,
        "client_secret" : secret,
        "redirect_uri" : redirectURL,
        "code" : code,
        "grantType" : "authorization_code"
    ]
    var request = NSMutableURLRequest(URL: NSURL(string: url)!)
    var session = NSURLSession.sharedSession()
    request.HTTPMethod = "POST"

    var err: NSError?
    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
    request.addValue("aapplication/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    request.addValue("\(request.HTTPBody!.length)", forHTTPHeaderField: "Content-Length")

可能是什么问题?提前谢谢。

1 个答案:

答案 0 :(得分:3)

哇,我不想听起来很苛刻,但这段代码有很多问题。

您没有发送grant_type,但发送了grantType

您将帖子正文编码为application/json,但您将内容类型设置为aapplication/x-www-form-urlencoded,这似乎是application/x-www-form-urlencoded的拼写错误。

因此有两种可能的拼写问题和内容类型不匹配。

如果您需要发送application/x-www-form-urlencodedapplication/json,请确定。格式化数据并根据需要设置内容类型。

仔细检查所有内容的拼写。