gpt4 book ai didi

android - Google Play 服务返回使用非 Google key 签名的 token

转载 作者:IT老高 更新时间:2023-10-28 21:38:37 26 4
gpt4 key购买 nike

我有一个 Android 客户端使用 GoogleAuthUtil.getToken(Context context, Account account, String scope) 从 Google Play 服务获取身份验证 token 。

然后将其发送到后端 (Go) 服务器,该服务器检查 token 是否由来自 https://www.googleapis.com/oauth2/v1/cert 的 Google 签名证书之一签名。 .为此,它需要在 token 头中查找分配给“ child ”的证书。

99% 的情况下,这工作得很好,但我经常遇到给定的“ child ”与任何已发布的 Google 证书不对应的情况,因此我无法验证 token 。

编辑:

我已经在服务器上添加了广泛的日志记录来尝试追踪这一点,并且有一些关系值得注意:

  1. 任何给定的无效 kid 仅用于单个用户。我经常看到同一用户在几天内使用给定的无效 kid 发出多个请求,但仅来自该用户。
  2. 提供无效 kid 的用户永远不会将有效 kid 用于任何请求,或任何其他 kid 用于请求,即使他们相隔几天。 Afaik Google 每 24 小时左右循环一次他们的证书。
  3. 许多用户正在使用较旧的客户端版本。大多数用户会在新版本发布后的一两天内升级,但大多数证书 key 无效的用户使用的是几周前的版本。
  4. 根据我们的用户群,请求来自全局各地。
  5. 请求来自不同时期,符合我们的用户群。
  6. 请求来自一系列设备、制造商和型号。

我目前的想法是,它可能来自从 Google Play 以外的网站下载 APK 的用户,但我现在无法验证这一点。

编辑:有一个问题跟踪器,但它似乎已被标记为低优先级。如果有人遇到此问题,请在跟踪器上告知。 https://issuetracker.google.com/issues/37734997

最佳答案

有点晚了,但对于遇到相同情况的人,我建议检查您应用的 Installer

使用 PackageManager.getInstallerPackageName()

getInstallerPackageName (String packageName) Retrieve the package nameof the application that installed a package. This identifies whichmarket the package came from

如果值为“com.android.vending”,则应用是从 Play 商店安装的,否则处理其他供应商。

关于android - Google Play 服务返回使用非 Google key 签名的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43629439/

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