我将Firebase v8与GoogleAuthProvider配合使用。
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;
// ...
})
问题
- Google的Using OAuth 2.0 to Access GoogleAPI文章建议增量授权(这不是Firebase,但建议很明确)
通常,最佳做法是在需要访问权限时,以增量方式请求作用域,而不是预先请求。例如,希望支持将事件保存到日历的应用程序在用户按下“添加到日历”按钮之前不应请求Google日历访问权限。
AFAICT,如果不对用户进行重新身份验证,就无法使用Firebase实现增量授权。虽然可以使用addScope将作用域添加到GoogleAuthProvider,但需要后续调用signInWithPopup(即对用户进行重新身份验证)。是否有任何方法可以在不进行重新身份验证的情况下仅提示授权(例如驱动器访问)?
1.假设访问令牌是短期的,Google ID令牌是否可以用于获取新的访问令牌?重新验证用户是否是获取新访问令牌的唯一方法?
1.是否有办法确定访问令牌是否已过期?
1条答案
按热度按时间pnwntuvh1#
使用Firebase实现增量授权的最佳方式是使用OAuth 2.0授权代码流。该代码流允许您在需要时请求额外的作用域,而无需重新验证用户。
Google ID令牌不适合获取新的访问令牌。重新验证用户是获取新访问令牌的唯一方法。
要确定访问令牌是否已过期,可以使用Google OAuth 2.0 API的TokenInfo端点。