我正在尝试访问Google Drive API,并且阅读了文档。我的iOS应用发送第一个请求以征求端点https://accounts.google.com/o/oauth2/v2/auth。
用户赠款许可。我得到了一个代码。下一步是用于刷新和访问令牌的授权代码。
至于安装的应用程序,我不需要发送客户端秘密。为了做到这一点,iOS应用将发布请求发送到端点:
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 Console中注册。
我的问题是我做错了什么?
它将在 post 请求中发送指定的数据到HTTP服务器,就像当我们填写HTML表单并提交时浏览器时一样。这将导致使用内容类型application/x-www-form-urlencoded
将数据传递到服务器。
您应该通过更改通过OAuth参数(例如client_id
,redirect_uri
,grant_type
等(的方式尝试尝试。
或应该尝试成为默认类型的本地客户端。
解析错误的一种可能来源是redirect_uri
。它应该进行URL编码。