"drive.metadata.readonly" 和 "drive.readonly.metadata" 之间的区别

Difference between "drive.metadata.readonly" and "drive.readonly.metadata"

我想问一下DriveScopes.DRIVE_METADATA_READONLYhttps://www.googleapis.com/auth/drive.readonly.metadata之间的区别是什么?换句话说,有什么区别 这两种形式:

https://www.googleapis.com/auth/drive.metadata.readonly //DriveScopes.DRIVE_METADATA_READONLY
https://www.googleapis.com/auth/drive.readonly.metadata

当我使用 服务帐户Drive API 一起工作时,我花了很长时间才弄明白,为什么我的应用抛出 未经授权的异常:

Uncaught exception from servlet
com.google.api.client.auth.oauth2.TokenResponseException: 403
{
    "error" : "access_denied",
    "error_description" : "Requested client not authorized."
}

字符串常量 DriveScopes.DRIVE_METADATA_READONLY 导致异常。我应该在什么情况下使用这个常量?

这显然是 Java API 客户端的一个错误。

API documentation 指出正确的范围是:

https://www.googleapis.com/auth/drive.readonly.metadata

而当您查看 the latest javadoc(在回答此问题时),您会得到:

https://www.googleapis.com/auth/drive.metadata.readonly

您应该忽略 DriveScopes 常量并创建您自己的常量,而 Google Drive 团队修复了这个问题。