我试图访问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控制台中注册。
我的问题是我做错了吗?
答案 0 :(得分:3)
它将 POST 请求中的指定数据发送到HTTP服务器,就像浏览器填写HTML表单并提交时一样。这将导致使用内容类型application/x-www-form-urlencoded
将数据传递到服务器。
您应该尝试更改传递OAuth参数的方式,例如client_id
,redirect_uri
,grant_type
等。
或者应该尝试使用默认类型的Native客户端。
答案 1 :(得分:0)
解析错误的一个可能来源是redirect_uri
。它应该是url编码的。