TV设备中请求Drive权限的Google登录失败问题求助
我遇到了一个困扰我三个月的问题,想请大家帮忙看看:
之前用了3-4年的Google登录+Drive权限请求方法突然失效了,原来的代码是这样的:
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestScopes(new Scope(DriveScopes.DRIVE), new Scope(DriveScopes.DRIVE_METADATA)) .build();
我尝试过几种临时解决办法:比如恢复出厂设置、移除所有账号后清除Google Play服务的数据和缓存,再重新登录。这些操作能让功能暂时恢复,但过几天又会再次登录失败,反复恢复出厂设置也只是治标不治本。
补充一下项目的情况:我在Google Cloud Console创建的项目是生产状态,但因为只用在少数人身上,所以还没完成验证。后来为了测试,我新建了一个项目,设置成“测试”状态并添加了测试用户,但问题还是一样存在。
另外我还试了授权码流(Authorization Code Flow)的方式:单纯登录是没问题的,但只要加上Drive权限的请求,就拿不到设备码,反而会收到400错误,具体报错信息如下:
POST https://oauth2.googleapis.com/device/code - HTTP 400
Request failed. HTTP status: 400, body: {
"error": "invalid_scope",
"error_description": "Invalid device flow scope: https://www.googleapis.com/auth/drive"
}
Request failed. HTTP status: Response{protocol=h2, code=400, message=, url=https://oauth2.googleapis.com/device/code}
用这个方法的时候,我用的是测试项目里的TV客户端ID。
有没有朋友遇到过类似的问题?或者能给我一些排查和解决的思路?
备注:内容来源于stack exchange,提问作者MEGHA G.S

