Google OIDC 错误。 "Error 400: invalid_scope. Requests for only id token must contain a subset of [openid, email, profile] scopes."

Google OIDC error. "Error 400: invalid_scope. Requests for only id token must contain a subset of [openid, email, profile] scopes."

我们有一个通过 Google OIDC 认证的 React 应用程序。它工作正常,突然用户不知何故出现以下错误。

Error 400: invalid_scope. Requests for only id token must contain a subset of [openid, email, profile] scopes

我们需要访问用户数据,因此我们的身份验证提供程序的范围是,

export const AUTH_OIDC_SCOPE ='https://www.googleapis.com/auth/admin.directory.user'

授权码:

  const provider = new firebase.auth.OAuthProvider(AUTH_PROVIDER)
  provider.addScope(AUTH_OIDC_SCOPE)

  const authenticateWithGcp = () => {
    firebase
      .auth()
      .signInWithPopup(provider)
      .catch((error) => {
        return error
      })
  }

  useEffect(() => {
    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        user.getIdToken(true).then((token) => {
          ....
        })
      } else {
        authenticateWithGcp()
      }
    })
  }, [])

知道如何修复错误,同时将 admin.directory.user 保持在范围内吗?

如果您查看错误消息,它会显示“仅请求 ID 令牌”,这就是问题所在。

当您仅请求 ID-token 时,您需要请求用户详细信息,如 openid、电子邮件或个人资料.....否则 id-token 将为空。

只要求 ID 令牌意味着您不需要任何访问令牌。所以这意味着 AUTH_OIDC_SCOPE 应该是

AUTH_OIDC_SCOPE ='openid email profile' 

如果那是你想要做的。