目前,在我正在开展的一个项目中,我们使用 Google Workspace 作为内部应用。我们希望访问某些用户的电子邮件,但不是全部。我们调查了如何为某些用户省略一些范围,但这是不可能的。
我们正在使用 Google OAuth 2.0,在范围参数上设置
gmail.readonly
,但我们希望用户(公司工作人员)选择他们允许授予访问权限的权限。当前的同意窗口如下所示:
我们想要这样的东西:
我们使用
useGoogleLogin
中的 @react-oauth/google
进行登录,如下所示:
const login = useGoogleLogin({
onSuccess: (codeResponse) => {
getApiAccessToken(codeResponse);
},
scope:
'https://www.googleapis.com/auth/gmail.readonly',
flow: 'auth-code',
enable_serial_consent: false,
onError: () => {
handleError();
},
});
不知道我们是否需要在那里设置额外的东西,但根据 react-oauth/google 的文档看起来一切都可以。
我们还尝试将
include_granted_scopes: false
参数添加到 useGoogleLogin
但显然不相关。所有流程都按预期进行,我们在后端获得授权并请求访问令牌等等,我们只想让用户决定是否想要共享 Gmail 数据。
我们调查了如何省略某些用户的某些范围,但这是不可能的。
如果您在请求其他范围之前询问用户 ID 或电子邮件(
openid
或 email
范围),则可以实现此目的。您可以根据用户与您共享的电子邮件或 ID 做出决定。
如果您需要启用细化权限,您可以将客户端设置为外部(而不是组织内部)。如果您仍然需要确保只有特定工作区域内的用户才会授予对您的应用程序的访问权限,一种可能的方法是使用 hd 参数。