Google Identity Platform:无法交换授权代码以进行刷新和访问令牌

时间:2017-04-26 07:37:55

标签: ios google-api google-drive-api drive

我试图访问Google Drive API并阅读documentation。 我的iOS应用首先发出请求,要求获得端点https://accounts.google.com/o/oauth2/v2/auth的许可。

用户授予权限。我得到了一个代码。下一步是授权代码以刷新和访问令牌。

对于已安装的应用,我不需要发送客户端密码。 为了做到这一点,iOS应用程序向端点发送POST请求:

https://www.googleapis.com/oauth2/v4/token
带标题的

Content-Type : application/x-www-form-urlencoded

体:

code={CODE_FROM_OAUTH_SERVER}&client_id={CLIENT_ID_FROM_CONSOLE}&redirect_uri={APP_BUNDLE_IDENTIFIER}:/code&grant_type=authorization_code

我收到回复:

{
  "error": "unsupported_grant_type",
  "error_description": "Invalid grant_type: "
}

应用已在Google控制台中注册。

我的问题是我做错了吗?

2 个答案:

答案 0 :(得分:3)

它将 POST 请求中的指定数据发送到HTTP服务器,就像浏览器填写HTML表单并提交时一样。这将导致使用内容类型application/x-www-form-urlencoded将数据传递到服务器。

您应该尝试更改传递OAuth参数的方式,例如client_idredirect_urigrant_type等。

或者应该尝试使用默认类型的Native客户端。

答案 1 :(得分:0)

解析错误的一个可能来源是redirect_uri。它应该是url编码的。