【问题标题】:How to get providers access tokens from Firebase authenticated user?如何从经过 Firebase 身份验证的用户获取提供商访问令牌?
【发布时间】:2017-12-13 13:02:00
【问题描述】:

我正在使用 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)

谢谢

【问题讨论】:

  • 嘿.. 那么是否可以从 Firebase 获取提供商特定的 accessToken?
  • @iMDroid 是的,您可以获得访问令牌,但只有在用户进行身份验证时(firebase.google.com/docs/auth/web/…)。用户通过身份验证后,您将无法检索访问令牌。我最终做的是将访问令牌保存到 Firebase 数据库,然后在我需要连接到 Twitter API 时读取它们。看看我如何在这里进行身份验证github.com/esausilva/profile-updater/blob/…
  • 好的..感谢您的帮助:)

标签: javascript reactjs firebase firebase-authentication


【解决方案1】:

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

【讨论】:

  • 你知道自从你最初写这篇文章后是否改变了?我现在正在寻找做类似的事情,但使用 twitter。我在用户第一次授权时获得了凭据,但在那之后我似乎找不到刷新 twitter 凭据的方法。
  • 从那以后一切都没有改变。
  • 感谢您的回复。根据 twitter 文档,这些令牌无论如何都是长期存在的,所以当我得到它们时,我只是要把它们塞进火库。不确定其他提供商。
猜你喜欢
  • 2018-11-07
  • 1970-01-01
  • 2017-01-10
  • 2017-05-01
  • 1970-01-01
  • 2016-06-18
  • 2021-11-03
  • 1970-01-01
  • 2014-06-07
相关资源
最近更新 更多