2014-01-24 180 views
1

我正在编写需要访问Google任务API的Java客户端应用程序。我正在按照页面https://developers.google.com/accounts/docs/OAuth2InstalledApp中的说明进行操作,并设法获得授权码。但是,当我尝试获取访问令牌时,我不断收到错误400“错误的请求”。错误401向Oauth2请求来自Google的访问令牌

我使用Firefox附加组件测试。我发个帖子请求https://accounts.google.com/o/oauth2/token与内容:

code=<the-code-i-got-in-step1>& 
client_id=1097620474561-gusvm8cq428h86r7pcum285cuffssncj.apps.googleusercontent.com& 
client_secret=,my-client-secret>& 
redirect_uri=hurn:ietf:wg:oauth:2.0:oob& 
grant_type=authorization_code 

什么,我可能是做错了什么建议?

+0

跟踪实际的HTTP您的应用程序发送帮我制作一个代码初始请求时需要进行。然后去Oauth Playground并在那里执行相同的步骤,注意http请求。比较两者。这可能与对参数进行URL编码一样简单。 – pinoyyid

+0

我可以在OAUTH游乐场里完成游戏,至少我可以看到成功的反应会是什么样子,但我仍然无法获得自己的客户端ID。不幸的是,我无法使用wireshark跟踪HTTP会话,因为它使用的是HTTPS。 –

+0

在Oauth游乐场,如果你点击齿轮图标,你可以输入你自己的客户端凭证。试一下,这样你可以消除,如果它是一个编码问题或设置问题。 – pinoyyid

回答

0

如果它是一个400错误(而不是401 - 两个代码在你的问题中提到),则是最有可能请求的格式不正确,检查一般的HTTP的东西,如:

  1. 确保它是一个POST - 并且您将数据作为正文,而不是作为查询字符串。
  2. Content-Length已设置。
  3. Content-Type设置为application/x-www-form-urlencoded。
  4. 每个表单参数其实url编码

我会建议利用了谷歌提供在可能情况下,对已安装的客户端应用程序的例子可以在这里找到客户端库: https://code.google.com/p/google-api-java-client/wiki/OAuth2#Installed_Applications

+0

我确实正在使用正文中的数据进行POST,而不是查询字符串。内容类型设置为application/x-www-form-urlencoded,并且内容长度由Poster附加组件自动设置。 –

+0

Yesyerday我得到了一个错误401(对错误400的引用是一个错字),但是当我今天再次尝试时,我得到错误代码404 - 找不到。 –

+0

我发现我没有正确的URL编码我的一个参数。当我解决这个问题时,我仍然得到一个错误,但它是不同的。我得到了HTTP代码= 400和JSON错误“Invalid Grant” –

相关问题