客户端代码中的范围列表- 这是用户授权您的应用程序执行的操作
当您请求用户授权时,您需要指定您希望用户同意的内容。这就是范围列表的用途 - 它控制用户在授权您的应用程序时看到的文本,并且该授权授予的刷新/访问令牌仅限于进行这些范围允许的 API 调用。
API 控制台中启用的服务列表- 这是您的应用程序授权用户执行的操作
据我所知,API 控制台中没有指定范围列表。不过,有一个可以启用的 Google 服务列表。这里启用/禁用服务更多的是关于打开/关闭进行 API 调用以及管理配额和/或接受与该 API 相关的服务条款的能力,而不是授权。
当进行 API 调用时- 您发送访问令牌
访问令牌封装了发出请求的用户、用户授权给您的范围以及用于授权的客户端 ID(又属于您的项目)。此时,您需要在项目上启用 API 调用发送到的服务,以及 API 请求的正确范围 - 否则您将收到 403。
当您的所需范围列表发生变化时- 您应该预期用户需要重新授权
当您请求访问令牌(通常通过发送刷新令牌)时,您需要做好该请求不会成功的准备。也许是因为您添加了范围 - 但也许用户选择了访问https://accounts.google.com/IssuedAuthSubTokens https://accounts.google.com/IssuedAuthSubTokens并已撤销您的应用程序访问权限。我不确定如果您请求的范围少于用户最初授予的范围是否会触发此问题,我会尝试进行测试 - 但要点是,无论您的代码都需要能够处理这种情况。我相信 OAuth2DecoratorFromClientSecrets (来自链接的问题)将为您优雅地处理这个问题,但我不确定 - 它应该很容易验证。
跨多个客户端使用相同的授权- 建议阅读本文档,看看它是否涵盖了您的所有场景:https://developers.google.com/accounts/docs/CrossClientAuth https://developers.google.com/accounts/docs/CrossClientAuth
查看授予访问令牌的范围- 使用 OAuth2 API:https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=yaxxxxxxxxxxxxxxx https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=yaxxxxxxxxxxxxxxx