Google Oauth2身份验证返回"缺少必需参数:grant_type"

时间:2014-04-01 15:03:00

标签: java google-oauth

我正在尝试从Google获取刷新令牌以访问Google云端硬盘。到目前为止,我已经设法在谷歌应用引擎中创建一个页面,将我重定向到身份验证页面,我能够获得代码。到达那里的网址是

Window.Location.assign("https://accounts.google.com/o/oauth2/auth?scope=profile&redirect_uri=http://127.0.0.1:8888/oauth2manager/redirect&response_type=code&client_id=1058171155388-hg2akr2idan7c2kvdam9b89vptcjai8i.apps.googleusercontent.com");

然后我被重定向到/ oauth2manager / redirect servlet并获取doPost方法中的代码

String code = request.getParameter("code");

我的问题是我无法继续,因为我经常遇到上述错误"缺少必需参数:grant_type"我已经尝试过restclient wiztools,RestEasy firefox扩展甚至卷曲。 这是我的卷曲脚本

 #!/bin/bash
$code= "4/E7i1aKu4C-Pf23-8hY4Y8OBe9IBZ.wtKglnd8-CMdOl05ti8ZT3aNPWw7igI";
curl -v --data "code="+$code+"&client_id=1058171155388-hg2akr2idan7c2kvdam9b89vptcjai8i@developer.gserviceaccount.com&client_secret=JHXTAT4UWwsNaMgm******&redirect_uri= http://127.0.0.1:8888/oauth2manager/redirect&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token

如何解决这个问题?我是新手。

1 个答案:

答案 0 :(得分:0)

我认为你混合的Oauth类型。您使用的代码是普通的Oauth2。但您的客户是服务帐户。

普通Oauth2会询问用户是否允许您访问他们的数据。服务帐户用于允许其他人访问应用程序的数据,没有服务帐户的权限请求。

链接到服务帐户的文档。 Service account