访问令牌和ID令牌的交换代码

时间:2013-12-16 16:28:16

标签: oauth google-oauth google-api-client

如何交换访问令牌和ID令牌的代码?我一直在关注文档 https://developers.google.com/accounts/docs/OAuth2Login

发布请求:

@ : accounts.google.com/o/oauth2/token?
code=4/QS2fR4UhBantoD-JoJjrT2CSvYaX.EnMe1Y9wBt4cXE-sT2ZLcbKZES74hQI&
client_id=8479957621832pdqb45650bra4oi63s9mchef2m3nvkd.apps.googleusercontent.com&
client_secret=RT46Ut_YS9GEejFVDVpl6Orxt&
redirect_uri=https://oauth2-login-demo.appspot.com/code&
grant_type=authorization_code 

返回

  

{“error”:“invalid_request”}

请求参数有什么问题?

2 个答案:

答案 0 :(得分:0)

很难从问题中的有限信息中得知 - 但我根据所显示的日志条目猜测,您发送的请求包含查询字符串中的所有参数(就像GET请求一样,即使您正在使用POST方法。)

请再次尝试作为POST请求,确保表单参数位于请求正文中并正确设置Content-Length - 而不是在查询字符串中发送它们。

答案 1 :(得分:0)

我遇到的一个问题是第二个请求上的redirect_uri(登录页面之后,当Google向您的“返回” uri发送代码,而您试图将其换成令牌时)

那个redirect_uri必须与第一个相同。换句话说,这是交换令牌代码时您已经在页面上的uri。

也许这不是一个普遍的问题,但是对我来说似乎完全合乎逻辑,如果规范要求提供一个redirect_uri,它可能就不会想要我已经给他们的相同的uri,而它们刚刚达到毫秒