[在第二次尝试刷新令牌时如何修复“格式错误的身份验证代码”?

问题描述 投票:0回答:1

我正在开发带有Angular和Cordova插件的Android应用,我希望将其与Google身份验证集成。我已经安装了cordova-plugin-googleplus,并且已成功集成到应用程序中。当用户登录时,我得到一个响应,可以获取accessToken,配置文件用户信息和refreshToken。

现在,我想实现一种功能,以刷新令牌,而不会每小时以新的提示屏幕打扰用户。

我设法续订了accessToken,但只在第一次使用时有效

我已经使用了两种方式:

  1. 使用以下数据发送卷曲请求
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'
  1. 使用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客户端”

[由于我被困了几天,希望任何人都能帮上忙

cordova oauth-2.0 cordova-plugins google-oauth google-oauth-java-client
1个回答
0
投票

这是授权授予流程。为简单起见,请遵循以下步骤。

© www.soinside.com 2019 - 2024. All rights reserved.