如何从 Firebase 身份验证用户获取提供者访问令牌?

esa*_*lva 7 javascript firebase reactjs 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;
  // ...
}
Run Code Online (Sandbox Code Playgroud)

但是,在使用 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;
    // ...
  }
Run Code Online (Sandbox Code Playgroud)

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

谢谢

boj*_*eil 5

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