【问题标题】:Incremental authorization with Firebase and GoogleAuthProvider使用 Firebase 和 GoogleAuthProvider 的增量授权
【发布时间】:2022-12-03 10:01:16
【问题描述】:

我正在使用 Firebase v8GoogleAuthProvider

Firebase documentation 提供了以下代码来验证用户。

import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";

const auth = getAuth();

signInWithPopup(auth, provider).then((result) => {
  const credential = GoogleAuthProvider.credentialFromResult(result);
  const token = credential.accessToken;
  const user = result.user;
})

问题

  1. Google的Using OAuth 2.0 to Access Google APIs文章推荐增量授权(不是Firebase,但是推荐很明确)

    通常最好的做法是递增地请求范围,在 需要时间访问,而不是预先。例如,一个应用程序 希望支持将事件保存到日历的不应该请求 在用户按下“添加到日历”之前访问 Google 日历 按钮。

    AFAICT,如果不重新验证用户身份,就无法通过 Firebase 实现增量授权。虽然可以使用addScope将作用域添加到GoogleAuthProvider,但需要随后调用signInWithPopup(即用户需要重新验证)。有没有办法只提示授权(例如驱动器访问)而不重新验证?

    1. 假设访问令牌是短暂的,是否可以使用 Google ID 令牌获取新的访问令牌?重新验证用户是获取新访问令牌的唯一方法吗?

    2. 有没有办法确定访问令牌是否已过期?

【问题讨论】:

    标签: firebase firebase-authentication google-oauth


    【解决方案1】:

    使用 Firebase 实现增量授权的最佳方法是使用 OAuth 2.0 授权代码流。此流程允许您在需要时请求其他范围,而无需重新验证用户。

    Google ID 令牌不适合获取新的访问令牌。重新验证用户是获取新访问令牌的唯一方法。

    要确定访问令牌是否已过期,您可以使用 Google OAuth 2.0 API 的 TokenInfo 端点。

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2019-11-02
      • 1970-01-01
      • 2021-05-26
      • 2013-07-09
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      相关资源
      最近更新 更多