google oauth1 到 oauth2 迁移 invalid_token 错误

Posted

技术标签:

【中文标题】google oauth1 到 oauth2 迁移 invalid_token 错误【英文标题】:google oauth1 to oauth2 migration invalid_token error 【发布时间】:2014-01-26 06:24:53 【问题描述】:

我一直在尝试使用 oauth1 访问令牌获取新的 oauth2 刷新令牌,但它不断返回“invalid_token”错误。我已检查并且访问令牌工作正常。我还在 oauth2 操场上测试了相同的凭据/参数,结果是一样的。任何帮助表示赞赏...

这是 curl 详细输出:

> POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
Authorization: OAuth oauth_nonce="cb7407355fe20f509cb6bf901eae2d24", oauth_timestamp="1389169471", oauth_consumer_key="***", oauth_token="1%2FFVy....", oauth_signature_method="HMAC-SHA1", oauth_signature="0YL1hH5R571nOH1byeHxQlg%2Fa6g%3D"
Content-Length: 444

* upload completely sent off: 444 out of 444 bytes
< HTTP/1.1 400 Bad Request
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: Fri, 01 Jan 1990 00:00:00 GMT
< Date: Wed, 08 Jan 2014 08:24:31 GMT
< Content-Type: application/json
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
* Server GSE is not blacklisted
< Server: GSE
< Alternate-Protocol: 443:quic
< Transfer-Encoding: chunked
< 
* Connection #0 to host accounts.google.com left intact
string(415) "HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Wed, 08 Jan 2014 08:24:31 GMT
Content-Type: application/json
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alternate-Protocol: 443:quic
Transfer-Encoding: chunked


  "error" : "invalid_token"
"

【问题讨论】:

感谢您报告问题。我正在研究这个,会尽快更新这个帖子。 【参考方案1】:

您能否检查是否将 client_secret 放入 POST 正文中的 中?

grant_type=urn:ietf:params:oauth:grant-type:migration:oauth1&client_id=xxxxxxx.apps.googleusercontent.com&client_secret=xxxxxxx

在生成 oauth_signature 时,您还需要在 client_secret 值周围加上

【讨论】:

【参考方案2】:

我们对 OAuth1->OAuth2 令牌迁移的验证部分进行了一些更改。您介意再次检查您的迁移流程并使用结果更新此线程吗?

【讨论】:

以上是关于google oauth1 到 oauth2 迁移 invalid_token 错误的主要内容,如果未能解决你的问题,请参考以下文章

OAuth1.0与OAuth2.0的区别与联系

使用 google-api-java-oauth 的 oauth1 示例 [关闭]

使用 google-api-java-oauth 的 oauth1 示例 [关闭]

将授权机制 ClientLogin 迁移到 OAuth2 Google AdWords v201206 Perl

Shiro学习(17)OAuth2集成

OAuth 1 在线签名测试器?