Google Oauth 移除访问范围 (scopes) 的问题

6
假设我有一个应用程序,我的应用程序已经运行了多年并请求用户访问权限。该应用程序请求的权限比实际需要的要多,或者应用程序已更改,不再需要一些它正在请求的范围。
已删除有问题的授权,因此不再提示新用户我们不需要的访问权限。
但是,现在我们有许多旧用户的刷新令牌授予我们访问权限,而我们不需要这些权限。我希望通过从其授权中删除不再需要的范围来解决此问题。最简单的解决方案可能是撤销他们的令牌并要求他们重新授权,但我认为这对客户来说是不可接受的。
范围的示例:
- 查看和管理您的Google Analytics数据。 - 查看您的Google Analytics数据。
该应用程序正在请求完全访问权限,但实际上不需要全部访问权限。

是否有可能在授权中删除范围?我知道可以请求额外权限,但我还没有找到删除过多权限的方法。


嗨DalmTo,你找到答案了吗? - Julius Ting
2个回答

2
您可以通过编辑脚本项目的清单文件来明确设置其使用的范围。清单字段oauthScopes是项目使用的所有范围的数组。要设置您的项目范围,请执行以下操作:
  1. 在Apps Script编辑器中打开脚本项目。
  2. 在菜单中,选择“文件”>“项目属性”。
  3. 选择“范围”选项卡。
  4. 查看脚本当前需要的范围,并确定需要进行哪些更改。完成后点击“取消”。
  5. 如果左侧导航栏中没有显示appsscript.json清单文件,则选择“查看”>“显示清单”文件菜单项。
  6. 在左侧导航中选择appsscript.json文件以打开它。
  7. 找到顶级字段标记为oauthScopes。如果不存在,则可以添加它。
  8. oauthScopes字段指定一个字符串数组。要设置项目使用的范围,请将此数组的内容替换为您想要使用的范围。例如:

enter image description here

  1. 使用Ctrl+S或菜单栏中的保存文件图标保存清单文件。
更多信息请参见:https://developers.google.com/apps-script/concepts/scopes

1
不,这是不可能的。
作用域不是嵌套的。因此,尽管在逻辑上,“analytics.readonly”是“analytics”的子集,但在内部视图中并非如此。因此,从“analytics”降级到“analytics.readonly”是不可能的,因为它们是完全独立的作用域。因此,由于您必须通过额外的作用域过程获取“analytics.readonly”,您可以撤销现有令牌,这是删除现有“analytics”授权的唯一方法。

1
不是要降级,而是最初就有两个请求,我想删除其中一个。 - Linda Lawton - DaImTo
你最初请求了analytics和analytics.readonly两个权限?有点奇怪,但无论如何,无法撤销令牌的某些部分,因此您只能撤销令牌并请求一个新的令牌。由于您没有请求任何新的范围,如果设置“prompt = none”,则可能避免要求用户重新授权。 - pinoyyid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接