首页 文章

如何让提供商从Firebase经过身份验证的用户访问令牌?

提问于
浏览
3

我正在使用Firebase对GitHub,Twitter和Facebook进行身份验证,我知道我可以在进行身份验证时获取提供者访问令牌

firebase.auth().signInWithPopup(provider).then(function(result) {
  // This gives you a Facebook Access Token. You can use it to access the Facebook API.
  var token = result.credential.accessToken;
  // The signed-in user info.
  var user = result.user;
  // ...
}

然而,在使用React Router 4进行身份验证后,我将用户重定向到安全区域,在这个安全区域我需要检索提供者访问令牌,以便我可以访问GitHub,Twitter和Facebook API(对于Twitter我也需要获得“秘密”)串) .

我可以在安全区域中设置一个身份验证状态观察器(下面)以获取基本用户详细信息,甚至是用户已链接的提供者,但是这不会为我提供连接到相应提供者API所需的访问令牌

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    var displayName = user.displayName;
    var providerData = user.providerData;
    // ...
  }

我应该提一下,我允许用户链接多个身份验证提供程序,因此我需要所有访问令牌(https://firebase.google.com/docs/auth/web/account-linking

谢谢

1 回答

  • 2

    很遗憾,Firebase Auth不会为用户管理OAuth访问令牌 . OAuth通过弹出/重定向登录后,将返回访问令牌,但之后不会再返回新的访问令牌 . 如果您需要此功能,则需要使用Facebook / Google等原生SDK登录用户,然后使用OAuth凭证登录FireInwithCredential . 这些SDK将为您管理OAuth令牌,并在到期时使用新的访问令牌更新您 . 如果您认为这是Firebase应支持的重要功能,请提出您的案例并提交功能请求 . 您可以使用Firebase论坛:https://groups.google.com/forum/#!forum/firebase-talk或通过Firebase官方支持渠道申请 .

相关问题