gpt4 book ai didi

javascript - firebase 提供者身份验证刷新流程

转载 作者:行者123 更新时间:2023-12-04 17:17:32 26 4
gpt4 key购买 nike

我正在尝试使用 firebase 身份验证来获取 google 访问 token ,以便调用 youtube API。

我最初能够像这样获得访问 token :

const provider = firebase.auth.GoogleAuthProvider();
cosnt scopes = []; // ...scopes
scopes.forEach(scope => provider.addScope(scope));

firebase.auth().signInWithPopUp(provider)
.then(userCredentials=> {
const oauthCredentials = userCredentials.credentials;
// using credentials for API calls
axios.get("some-google-api-path", { params: { access_token: oauthCredentials.accessToken } }); // and so on...
});

在访问 token 过期之前,这一切正常。据我所知,似乎 firebase 会自动刷新 session ,但我可以找到一种方法来获取新的访问 token 。

我试过:

firebase.auth().onAuthStateChange(user => {
// could not find the access token on the user object
});

由于失败,我尝试使用以下方法手动完成:

const token = firebase.auth.GoogleAuthProvider.credential(
oauthCredentials.idToken,
oauthCredentials.accessToken
);

const authResult = await firebase.auth().signInWithCredential(token);

问题是 authResult 将只包含 idTokenaccessToken,而不是两者,这取决于我给 firebase.auth.GoogleAuthProvider.credential 函数。

我错过了什么吗?还有其他/更好的方法吗?

最佳答案

这里有两个 token :

  • 刷新 token ,仅在用户主动登录后可用。由于它不会更改,因此您可以缓存此 token - 这实际上也是 Firebase SDK 所做的。
  • ID token ,当前用户可随时使用。此 token 将在一小时后过期,并由 Firebase SDK 自动刷新。

因此,如果您想保留对刷新 token 的访问权限,则必须在用户首次主动登录时自行存储(通常在本地存储中)。

关于javascript - firebase 提供者身份验证刷新流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68314082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com