快速阿拉莫火从刷新令牌请求错误中获取令牌



我对使用Alamofire很陌生,我用这个请求撞墙。我正在使用 GIDSignIn,并成功为用户获取令牌和刷新令牌,范围为 ["https://www.googleapis.com/auth/youtube.readonly"]。

我正在尝试完成此请求,如网站上的示例所示。该网站说忽略在iOS上使用client_secret,我这样做了。

POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
client_id=<your_client_id>&
client_secret=<your_client_secret>&
refresh_token=<refresh_token>&
grant_type=refresh_token

以下是我如何使用Alamofire实现它。我的client_id是GoogleService-Info.Plist中CLIENT_ID键的值,一个以.apps.googleusercontent.com 结尾的字符串。该refresh_token似乎也具有我在网上看到的其他示例的正确格式。

let endpoint = "https://www.googleapis.com/oauth2/v4/token"
let parameters = [
"client_id" : client_id, 
"refresh_token" : refresh_token, 
"grant_type" : "refresh_token"
]
Alamofire.request(endpoint, method: .post, 
parameters: parameters, 
encoding: JSONEncoding.default)
.responseJSON { (data) in
print("data: (data)")
let json = JSON(data.result)
}

数据响应为

data: SUCCESS: {
error = "unsupported_grant_type";
"error_description" = "Invalid grant_type: ";
}

不是很成功。我是否需要以不同的方式配置我的请求,或者获得适当的访问/权限来获取令牌?非常感谢!

@BikeshThakur帮助我弄清楚了!URLEncoding.httpBody 做到了!我也不需要任何标题。

Alamofire.request(endpoint, method: .post, 
parameters: parameters, 
encoding: URLEncoding.httpBody)

我这样在我的代码中已经厌倦了,你还需要检查一下编码类型URLEncoding.httpBody希望它可能会有所帮助

let headers = [
"Content-Type": "application/x-www-form-urlencoded"
]
Alamofire.request("https://accounts.google.com/o/oauth2/revoke?token={(token)}", method: .post, parameters: parameters, encoding:  URLEncoding.httpBody, headers: headers).responseJSON { (response:DataResponse<Any>) in

相关内容

  • 没有找到相关文章

最新更新