android - 原因:必须包含 Drive.SCOPE_APPFOLDER 才能使用快照
问题描述
我在 Google Play 商店中有一个游戏应用程序。它实现了谷歌的保存游戏功能。
我已经有几个月没有更新应用程序了,一天又一天,用户开始大量报告相同的错误:
Caused by: Must include Drive.SCOPE_APPFOLDER to use snapshots!
他们无法保存游戏。
我的第一个想法是谷歌一定搞砸了,因为我根本没有更新应用程序,而且它工作得很好,而且从一天到另一天,这个问题大量出现。
错误消息对我来说是难以理解的,因为我的 Google 登录中确实包含了这个范围,如下所示:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestId()
.requestScopes(new Scope(Scopes.DRIVE_APPFOLDER))
.requestServerAuthCode(getString(R.string.default_web_client_id))
.build();
我当然有,否则就不行了。
它工作得很好,而且,它已经工作了将近一年,我没有做任何修改。
所以接下来我想好了,让我们至少测试一下。所以我从 Playstore 下载了我自己的应用程序并尝试了登录和保存……为了我最大的惊喜,它确实对我有用。
我根本无法重现该错误。我尝试了几个 Google 帐户,尝试了几个卸载重新安装,尝试了 Google Play 游戏,也尝试了没有它。我完全一无所知。
整个情况是痛苦的。因为:
- 我没有更改应用程序代码,只有服务器端(谷歌的)代码可以更改
- 我无法重现该错误,因为使用相同的应用程序该功能对我有用
我真的在考虑用服务器端代码和所有东西来实现我自己的保存游戏功能,因为这是难以理解和搞笑的。用户正在给我写信,我看不到任何东西,也无法改变任何东西。绝对没有办法从这个错误开始。
任何回复都非常感谢,在此先感谢。
解决方案
问题不在于您的代码,问题发生在用户注册并且未授予游戏在 Google Drive 中创建和管理其自己的配置数据的权限时。
现在谷歌默认行为是拒绝这个权限,这就是你突然开始面临这个问题的原因。
推荐阅读
- firebase - 如何仅将子域重定向到 Firebase
- javascript - 从反应js中的数组数据获取输入标签时如何调用函数?
- python - 为什么 Python 将 (int) 之类的数据类型关键字视为变量?
- amazon-web-services - 我可以从源帐户运行 S3 批量复制操作作业吗
- wordpress - 允许访问者使用令牌在 Wordpress 中查看私人帖子
- java - 任何人都可以深入了解 @PreAuthorize 注释的工作原理吗?
- visual-studio-code - 这些 yaml.customTags 是从哪里来的 vs code
- python-3.x - 在 Python 3.x 中,如何最好地将单行字符串拆分为多个 Linux 样式的路径?
- laravel - where 和 whereIn 突然停止在 laravel api 中工作
- python - Elastic search 7.10.0 版与 elastalert 0.2.4 不兼容。(Python)