gpt4 book ai didi

android - Google API 对来自 GoogleAuthUtil.getToken 的一次性授权代码的授予无效

转载 作者:太空狗 更新时间:2023-10-29 13:26:50 25 4
gpt4 key购买 nike

我正在使用 GoogleAuthUtil.getToken() 在 Android 应用程序中获取一次性代码,然后将其发送到我们的服务器。我们的服务器随后将其交换为访问 token ,并使用它来获取用户的电子邮件。

这似乎有效。但是,如果我执行以下操作:

  1. 获取一次性代码
  2. 发送到服务器
  3. 使用它,并对用户进行身份验证
  4. 删除 Android 应用程序数据(使其忘记身份验证
  5. 获取一次性代码

第二个一次性代码实际上与第一个相同。

这已经被消费过一次,所以服务器第二次尝试用它交换访问 token 时会出现以下错误:

Error:"invalid_grant", Description:"Invalid code.[Email: 
Token Record:
Token: "4/aQQ_nbklfajrilawjvlkasjvVMD.AMsaNNC-gdsai3gJDIAvajvkrelwiDDI"
IssueDomain: "123456789012-1231231564adsafdas1f23a45fd6sad2.apps.googleusercontent.com"
IssueTimeSec: 1387110988
ExpirationTime: 1387111588
TokenUsage: 3
Scope: "https://www.googleapis.com/auth/plus.login"
Scope: "https://www.googleapis.com/auth/userinfo.email"
Scope: "https://www.googleapis.com/auth/plus.moments.write"
Scope: "https://www.googleapis.com/auth/plus.me"
Scope: "https://www.googleapis.com/auth/plus.profile.agerange.read"
Scope: "https://www.googleapis.com/auth/plus.profile.language.read"
Scope: "https://www.googleapis.com/auth/plus.circles.members.read"
ServiceInfo {
ServiceId: 123
Info <
[13245678] <
0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a
>
>
}
ServiceInfo {
ServiceId: 226
Info <
[security_lso_auth_oauth2.EarlyIssuedTokenProto] <
auto_approved: false
access_token: "fd12.a.Afdsa1eawfdsa2avi_f1ds2af15eaw61f2ag45a6v8-1f3ds2af5ew6a12-ad5A"
refresh_token: "2/da4ge5a4f5dsav-fsa54fe4wa5f_dfasenU-dsaddew"
>
>
}
Revoked: true
AuthorizedBy: 0x1234567890
OAuthCallbackUrl: "urn:accounts.google.com:api_auth:programmatic:virtual_redirect_uri"
OfflineAccess: true
RevokeOnPasswordChange: true
ClientManagedRevocation: false
InBundle: true
]", Uri:""

(敏感数据替换为随机值)

我看到还没有达到 ExpirationTime(10 分钟有效期),但是一次性代码不应该只从 GoogleAuthUtil.getToken() 返回一次吗?

这在部署情况下可能不是问题,因为大多数用户只会登录一次,所以这是设计使然吗?我应该在服务器上以任何方式处理它,还是接受这种情况会发生?

最佳答案

似乎使用 GoogleAuthUtil.invalidateToken(context, token) 会使 token 无效。下次您可以通过调用 getToken() 来请求新 token 。但这需要添加用户权限android.permission.MANAGE_ACCOUNTS。

关于android - Google API 对来自 GoogleAuthUtil.getToken 的一次性授权代码的授予无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20594822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com