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

2023-11-21

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

Thanks


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Firebase 经过身份验证的用户获取提供商访问令牌? 的相关文章

随机推荐

  • 如何让 fancyBox 2 调整其高度以适应其内容?

    我正在努力让我的fancyBox当其内容高于视口时扩展高度 这样 用户就可以使用浏览器的滚动条滚动其内容 相反 我的 fancyBox 不断获得自己的滚动条 我只是使用内联内容 而不是iframe 这些是我设置的选项 fancybox fa
  • 如何可靠地去除破坏代码的不可见字符?

    我正在尝试构建一个小书签 并被这个我刚刚弄清楚的问题所困扰 u8203字符 Chrome 在我的代码块 粘贴到 JS 控制台后 无助地告诉我是一个 无效字符非法 幸运的是 Safari 告诉我这是一个 u8203 我正在 Sublime T
  • NSSortDescriptor - 基于另一个数组对描述符进行排序

    我有一个核心数据应用程序 我想获取一种对象 User User拥有财产userId 我有另一个数组userIds 1 4 3 5 我想创建一个NSSortDescriptor这对我的User基于对象的顺序userIds 在数组中 这可能吗
  • powershell v2 - 如何获取进程ID

    我有一个应用程序 它运行自身的多个实例 例如 AppName exe instance1 AppName exe instance2 AppName exe instance3 我正在尝试使用 Powershell v2 创建一个简单的脚本
  • 如何偏移多边形边?

    I have a list of point2D that makes a closed polygon Now I want to create another set of 2D points by offsetting the pol
  • EntityType“ApplicantPosition”没有定义键

    运行我的第一个 asp net mvc 应用程序时出现此错误 我认为实体框架会自动创建以 Id 结尾的列名的键 这不是正确的吗 正如您所看到的 ApplicantPositionID 将是一个包含 2 列作为主键的表 因为它与申请人和职位相
  • 如何将字符串分配给可变静态变量?

    我想为全局变量赋值 但它一直出现编译器错误 static mut NameArr static str 20 0 20 fn main unsafe static mut S1 String to string S1 push 0 Name
  • EF Core 3.1 是否支持数据库优先方法?

    我们正在移植一个ASP NET MVC 4 x申请到ASP NET Core 3 1 当前应用程序正在使用EF 6 xDB优先方法 作为此迁移的一部分 我们将使用EF Core 3 1作为当前的替代方案EF 6 x 所以问题是 EF Cor
  • 安全地覆盖 RAM 中的 Python 变量? [复制]

    这个问题在这里已经有答案了 我正在用 Python 编写一个程序 其中涉及对密码进行哈希处理 假设我用它来获取密码 import getpass password getpass getpass Password 然后对其进行哈希处理 有没
  • WS_EX_APPWINDOW 是做什么的?

    这要么只是一个已弃用的窗口样式 没有文档 要么是我在搜索它时犯了一个缺陷 我的问题是 这个标志有什么作用 是否有我可能需要的支持的等效项 非常感谢您的建议 WS EX APPWINDOW是一种扩展窗口样式 记录在MSDN 它绝对不会被弃用
  • Connector/C++ MySQL 错误代码:2014,SQLState: HY000 和命令不同步错误为什么?

    您好 我使用 Connector C 并执行简单的 2 个 sql 命令 如下所示 第一个 select sql 运行正常 但第二个会导致此异常错误 ERR 命令不同步 你现在不能运行这个命令 MySQL 错误代码 2014 SQLStat
  • firebase .on("value") 和 .once("value") 之间的区别

    在更新子 Firebase 时 使用时会再运行一次 once 从 firebase 获取值并在应用程序中添加新行 但使用时 on 该代码适用于更新子项 但不适用于添加新子项 因为它从应用程序中删除了该行 尽管它添加到了 firebase 但
  • 是否可以获得“setter”的 setter 函数的引用?

    例如 在这段代码中 var o set a value this b value get a return this b 是否可以获取对该 setter 函数的引用o a这样如果引用被分配给f那么我可以做f call other value
  • 为什么Javascript函数“arguments”不是node.js中Array的实例?

    最近看了很多 NodeJS 和 Javascript 代码 似乎arguments 不是 Array 的实例 但仍然表现得像一个实例 所以人们做了类似的事情Array prototype slice call arguments or sl
  • 为什么 Opera 中的文本以更大的字体大小呈现?

    我正在开发一个需要或多或少像素完美的 HTML 页面 我注意到在 Opera 10 中 字体渲染得比在其他浏览器中更大 尽管字体大小实际上是相同的 请在 Opera 10 和其他浏览器 如 Firefox 3 6 中查看此示例页面 http
  • 沿 MKPolyLineView ( MKPolylineRenderer ) 的渐变

    我想根据速度等某些条件在折线视图上应用渐变 我能够子类化MKPolyLineRenderer使用自定义描边和填充进行绘制 但只能沿路径使用相同的颜色 我看到其他类似的问题 例如 从圆形或甜甜圈中绘制线段 or 在 OSX 上 如何渐变填充路
  • M 位置循环移位 N 大小数组的最快算法

    M 个位置的循环移位数组最快的算法是什么 例如 3 4 5 2 3 1 4 移位 M 2 个位置应该是 1 4 3 4 5 2 3 多谢 如果您想要 O n 时间并且不需要额外的内存使用 因为指定了数组 请使用 Jon Bentley 的书
  • 如何在 C++ 中以大写形式打印地址(十六进制值)

    我正在尝试以十六进制打印变量的地址 引用 并且也以大写形式打印 但我发现我能够以大写形式打印相当于 77 的十六进制值 但不能打印变量的地址 引用 有人可以帮我吗 以下是我遇到困难的程序 include
  • __attribute__ vector_size(16) 的含义是什么?

    我看到了一个 C 程序 attribute 第一次使用关键字 看起来它是一个 GNU 关键字 在海湾合作委员会这一页 他们解释了它的用途 vector size 16 属性 说 int foo attribute vector size 1
  • 如何从 Firebase 经过身份验证的用户获取提供商访问令牌?

    我正在使用 Firebase 通过 GitHub Twitter 和 Facebook 进行身份验证 并且我知道我可以在身份验证后获得提供程序访问令牌 如下所示 firebase auth signInWithPopup provider