Google Drive REST API 是否仍需要 GET_ACCOUNTS 权限?
Is GET_ACCOUNTS permission still required for Google Drive REST API?
Google 已弃用 Google 驱动器 Android API.
我们正在迁移到 Google Drive REST API (v3)。
2 年前,我们有使用 Google Drive REST API (v2) 的经验。我们知道 GET_ACCOUNTS
权限是必需的,GoogleAuthUtil.getToken()
才能正常工作 -
当我们查看 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 中进行了测试。没有 运行time GET_ACCOUNTS
权限被授予 Android 6 和 Android 8.
我也在进一步测试,通过从 Manifest 中完全删除 GET_ACCOUNTS
和 MANAGE_ACCOUNTS
。不过,Android 5、Android 6 和 Android 8 都是可行的。在运行ning之前,我已经清除了应用程序的缓存和存储空间。
那么,GET_ACCOUNTS
运行时间许可请求是否仍然需要 Google 驱动 REST API 才能工作?
根据 Authorizing and Using REST APIs, it does not seem required - because the GoogleSignInApi 可以使用,它请求 oAuth2
访问范围并且不需要直接访问设备上的功能。它从 Play Services 获取用户帐户,Play Services 知道登录帐户并充当委托人。
刚刚尝试过,唯一的区别是必须将 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);
...
Google 已弃用 Google 驱动器 Android API.
我们正在迁移到 Google Drive REST API (v3)。
2 年前,我们有使用 Google Drive REST API (v2) 的经验。我们知道 GET_ACCOUNTS
权限是必需的,GoogleAuthUtil.getToken()
才能正常工作 -
当我们查看 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 中进行了测试。没有 运行time GET_ACCOUNTS
权限被授予 Android 6 和 Android 8.
我也在进一步测试,通过从 Manifest 中完全删除 GET_ACCOUNTS
和 MANAGE_ACCOUNTS
。不过,Android 5、Android 6 和 Android 8 都是可行的。在运行ning之前,我已经清除了应用程序的缓存和存储空间。
那么,GET_ACCOUNTS
运行时间许可请求是否仍然需要 Google 驱动 REST API 才能工作?
根据 Authorizing and Using REST APIs, it does not seem required - because the GoogleSignInApi 可以使用,它请求 oAuth2
访问范围并且不需要直接访问设备上的功能。它从 Play Services 获取用户帐户,Play Services 知道登录帐户并充当委托人。
刚刚尝试过,唯一的区别是必须将 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);
...