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

时间:2017-07-09 21:18:56

标签: javascript reactjs firebase firebase-authentication

我正在使用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 个答案:

答案 0 :(得分:2)

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