使用Firebase和GoogleAuthProvider进行增量授权

xytpbqjk  于 2022-12-04  发布在  Go
关注(0)|答案(1)|浏览(140)

我将Firebase v8GoogleAuthProvider配合使用。
Firebase文档提供了以下代码来验证用户。

firebase.auth().signInWithPopup(provider).then((result) => {
  /** @type {firebase.auth.OAuthCredential} */
  var credential = result.credential;

  // This gives you a Google Access Token. You can use it to access the Google API.
  var token = credential.accessToken;
  // The signed-in user info.
  var user = result.user;
  // ...
})

问题

  1. Google的Using OAuth 2.0 to Access GoogleAPI文章建议增量授权(这不是Firebase,但建议很明确)
    通常,最佳做法是在需要访问权限时,以增量方式请求作用域,而不是预先请求。例如,希望支持将事件保存到日历的应用程序在用户按下“添加到日历”按钮之前不应请求Google日历访问权限。
    AFAICT,如果不对用户进行重新身份验证,就无法使用Firebase实现增量授权。虽然可以使用addScope将作用域添加到GoogleAuthProvider,但需要后续调用signInWithPopup(即对用户进行重新身份验证)。是否有任何方法可以在不进行重新身份验证的情况下仅提示授权(例如驱动器访问)?
    1.假设访问令牌是短期的,Google ID令牌是否可以用于获取新的访问令牌?重新验证用户是否是获取新访问令牌的唯一方法?
    1.是否有办法确定访问令牌是否已过期?
pnwntuvh

pnwntuvh1#

使用Firebase实现增量授权的最佳方式是使用OAuth 2.0授权代码流。该代码流允许您在需要时请求额外的作用域,而无需重新验证用户。
Google ID令牌不适合获取新的访问令牌。重新验证用户是获取新访问令牌的唯一方法。
要确定访问令牌是否已过期,可以使用Google OAuth 2.0 API的TokenInfo端点。

相关问题