[在第二次尝试刷新令牌时如何修复“格式错误的身份验证代码”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[在第二次尝试刷新令牌时如何修复“格式错误的身份验证代码”?相关的知识,希望对你有一定的参考价值。
我正在开发带有Angular和Cordova插件的android应用,我希望将其与Google身份验证集成。我已经安装了cordova-plugin-googleplus,并且已成功集成到应用程序中。当用户登录时,我得到一个响应,可以获取accessToken,配置文件用户信息和refreshToken。
现在,我想实现一种功能,以刷新令牌,而不会每小时以新的提示屏幕打扰用户。
我设法续订了accessToken,但只在第一次使用时有效
我已经使用了两种方式:
- 使用以下数据发送卷曲请求
curl -X POST
'https://oauth2.googleapis.com/token?code=XXXXXXXXXXXXXXXX&client_id=XXXXXXXXXXXXXXXX.apps.googleusercontent.com&client_secret=YYYYYYYYYYYY&grant_type=authorization_code'
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/x-www-form-urlencoded'
- 使用Java的Google API客户端库在服务器端实现,并主要遵循以下[code]
重点是,当用户首次登录(使用cordova-plugin-googleplus)时,我收到具有这种格式的refreshToken
4/rgFU-hxw9QSbfdj3ppQ4sqDjK2Dr3m_YU_UMCqcveUgjIa3voawbN9TD6SVLShedTPveQeZWDdR-Sf1nFrss1hc
[如果过一阵子我尝试以上述任何一种方式刷新令牌,我将获得一个成功的响应,其中包含新的accessToken和新的refreshToken。并且新的refreshToken具有其他格式
1/FTSUyYTgU2AG8K-ZsgjVi6pExdmpZejXfoYIchp9KuhtdknEMd6uYCfqMOoX2f85J
第二次尝试更新令牌时,我将令牌替换为第一个请求中返回的令牌
curl -X POST
'https://oauth2.googleapis.com/token?code=1/FTSUyYTgU2AG8K-ZsgjVi6pExdmpZejXfoYIchp9KuhtdknEMd6uYCfqMOoX2f85J&client_id=XXXXXXXXXXXXXXXX.apps.googleusercontent.com&client_secret=YYYYYYYYYYYY&grant_type=authorization_code'
-H 'Cache-Control: no-cache'
-H 'Content-Type: application/x-www-form-urlencoded'
但是这次,两种方式(Curl和Java)我都遇到相同的错误。
{
"error" : "invalid_grant",
"error_description" : "Malformed auth code."
}
我读过这个thread,这是将clientId指定为电子邮件的问题,但是我也没有找到解决方法,因为第一次登录是使用客户端ID'XXXXXXX.apps.googleusercontent.com'完成的并且如果我从Google帐户设置了一封电子邮件,它说这是“未知的Oauth客户端”
[由于我被困了几天,希望任何人都能帮上忙
这是授权授予流程。为简单起见,请遵循以下步骤。
以上是关于[在第二次尝试刷新令牌时如何修复“格式错误的身份验证代码”?的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 访问令牌在第二次尝试使用 ParseFacebookUtils 登录 Facebook 时为空
Spring Boot + OAuth + JWT + MySQL 刷新令牌第二次不起作用
Ajax 表单提交在第一次提交时返回错误,但在第二次单击时提交