如何通过 Firebase Google 身份验证获取带有刷新令牌的 YouTube 数据 API 访问令牌?

Posted

技术标签:

【中文标题】如何通过 Firebase Google 身份验证获取带有刷新令牌的 YouTube 数据 API 访问令牌?【英文标题】:How to get access token with refresh token for YouTube Data API through Firebase Google authentication? 【发布时间】:2021-11-13 22:05:42 【问题描述】:

我想构建一个可以查看用户的 YouTube 频道信息的网络应用。 我使用Firebase 与Google 进行身份验证,然后借助下面的代码存储accessTokenrefreshToken

const provider = new GoogleAuthProvider();

    provider.addScope("https://www.googleapis.com/auth/youtube.readonly");

    signInWithPopup(auth, provider)
      .then(async (result) => 
        // This gives you a Google Access Token. You can use it to access the Google API.
        const credential = GoogleAuthProvider.credentialFromResult(result);

        const accessToken = credential.accessToken;
        const refreshToken = result._tokenResponse.refreshToken;
        const user = result.user;
        localStorage.setItem("accessToken", accessToken);
        localStorage.setItem("refreshToken", refreshToken);
        localStorage.setItem("user", user);

但在accessToken 到期后,它就失效了。 所以,我想在refreshToken 的帮助下获得新创建的accessToken,但我找不到任何方法来检索它。

【问题讨论】:

firebase.google.com/docs/reference/js/v8/… 您可以在下面的答案中找到详细信息。 ***.com/questions/40838154/… 【参考方案1】:

Firebase SDK 不管理 this answer 中提到的提供程序令牌。最简单的方法是reauthenticate the user,但如果需要,用户可能必须重新授权您的应用程序。重新验证将返回与问题中代码 sn-p 中的 result 相同的 UserCredential 对象。

另一种选择是使用提供商自己的 SDK 并在需要时刷新令牌。

【讨论】:

你能给我一些资源来登录提供商自己的 SDK,在这种情况下,Google 使用 Firebase,因为重新验证对用户来说很乏味。

以上是关于如何通过 Firebase Google 身份验证获取带有刷新令牌的 YouTube 数据 API 访问令牌?的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是在 Android 的 Firebase Google 身份验证中首次通过身份验证

通过 Firebase 身份验证使用 Google Play 游戏

将 Google 身份验证令牌与 Firebase 一起使用

为啥在通过 Firebase 身份验证传递 id 令牌时,此 CORS 身份验证的 Google Cloud 函数会返回 403?

Unity/Firebase 如何使用 Google 进行身份验证?

将 Firebase Google OAuth 身份验证限制为特定用户