Joh*_*nGB 36 android certificate jwt google-play-services
我有一个Android客户端通过使用从Google Play服务获取身份验证令牌GoogleAuthUtil.getToken(Context context, Account account, String scope).
然后将其发送到后端(Go)服务器,该服务器检查该令牌是否来自https://www.googleapis.com/oauth2/v1/cert中的一个Google签名证书.为此,它需要在令牌标头中查找分配给"kid"的证书.
99%的情况下,这很好用,但我经常会遇到"孩子"与任何已发布的Google证书不对应的情况,因此我无法授权令牌.
编辑:
我已经在服务器上添加了大量的日志记录来尝试跟踪它,并且有一些关系值得注意:
kid仅用于单个用户.我经常会在同一个用户的几天内看到多个具有给定无效的请求kid,但只能来自该用户.kid从不kid对任何请求使用有效,或者对请求使用任何其他kid请求,即使它们相隔数天.Afaik Google每24小时左右循环一次证书.我目前的想法是,它可能来自从谷歌播放以外的网站下载APK的用户,但我现在无法验证这一点.
编辑:有一个问题跟踪器,但它似乎已被标记为低优先级.如果有人遇到此问题,请在跟踪器上告知.https://issuetracker.google.com/issues/37734997
有点晚了,但对于遇到同样情况的人,我建议检查Installer您的应用程序。
使用PackageManager.getInstallerPackageName()
getInstallerPackageName (String packageName) 检索安装包的应用程序的包名称。这可以识别包裹来自哪个市场
如果该值为“com.android.vending”,则该应用程序是从 Play 商店安装的,否则请处理其他供应商。
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |