android - Google Drive REST API 是否仍需要 GET_ACCOUNTS 权限?

标签 android google-api google-drive-api google-drive-android-api

Google 已弃用 Google Drive Android API。

我们正在迁移到 Google Drive REST API (v3)。

2 年前,我们有使用 Google Drive REST API (v2) 的经验。我们知道 GET_ACCOUNTS 权限是必需的,GoogleAuthUtil.getToken() 才能正常工作 - Google Drive API - the name must not be empty: null (But I had passed valid account name to GoogleAccountCredential)

当我们查看 Google Drive REST API (v3) 示例时 - https://github.com/gsuitedevs/android-samples/blob/master/drive/deprecation/app/src/main/AndroidManifest.xml#L5 ,我们注意到 Google 团队确实明确提到了

<!-- Permissions required by GoogleAuthUtil -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

令人惊讶的是,当我们运行示例应用程序 (https://github.com/gsuitedevs/android-samples/tree/master/drive/deprecation) 时,没有针对 Android 6 和 8 弹出运行时权限对话框。然而,该应用程序可以正常运行。

我们预计该应用程序将无法运行,因为没有为该应用程序授予 GET_ACCOUNTS 权限。但是,它仍然可以毫无问题地与 Google Drive 服务进行授权和通信。

这是我目前测试过的内容

我已经在 Android 5、Android 6 和 Android 8 中进行了测试。没有为 Android 6 和 Android 8 授予运行时 GET_ACCOUNTS 权限。

我还在进一步测试,通过从 list 中完全删除 GET_ACCOUNTSMANAGE_ACCOUNTS。不过,Android 5、Android 6 和 Android 8 都可以使用。在运行之前,我已经清除了应用程序的缓存和存储空间。


那么,Google Drive REST API 是否仍然需要 GET_ACCOUNTS 运行时权限请求才能工作?

最佳答案

根据 Authorizing and Using REST APIs , 它似乎不是必需的 - 因为 GoogleSignInApi可以使用,它请求 oAuth2 访问范围并且不需要直接访问设备上的功能。它从 Play Services 获取用户帐户,Play Services 知道登录的帐户并充当委托(delegate)。

刚刚试过,唯一的区别是必须添加 access-scopes作为字符串:

GoogleSignInOptions gso = new GoogleSignInOptions
  .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  .requestScopes(new Scope("https://www.googleapis.com/auth/drive.readonly"))
  .requestEmail()
  .build();

this.mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
...

关于android - Google Drive REST API 是否仍需要 GET_ACCOUNTS 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53941095/

相关文章:

android - Android 模拟器上的温度传感器检测

android - 包含 platform.js 后,Nativescript 应用无法构建

google-api - google docs api删除所有内容

c# - 如何在 google drive api 中进行一次身份验证

ios - 在 iOS 应用程序中集成 googleDrive

python - 谷歌云端硬盘 SDK : MediaUploadProgress - not sure how to use this

android - 将 Compose 的导航库升级到 Alpha 7 后出现问题

node.js - Webpack 和 GoogleApis 端点路径问题

jquery - 获取雅虎!使用 JQuery 和 Google API 的财经 RSS 错误

javascript - 使用 Android 和 JavaScript api 访问相同的 ParseObject