【问题标题】:OAuth 2.0 Flow with Firebase Functions带有 Firebase 功能的 OAuth 2.0 流程
【发布时间】:2020-05-22 00:29:25
【问题描述】:

如何使用 Firebase 函数成功连接到 OAuth 2.0 应用(例如:Alpaca)?我找到的最接近的是GCP tutorial,但它不会保存访问令牌以供将来使用。

我该怎么做:

  1. 记住不同 Firestore 函数的状态(用于防止请求伪造攻击的随机字符串),以便我可以确定它是否未更改?
  2. 将访问令牌与授权我的用户相关联(最好将令牌保存在 Firestore 中)?

是否有一个库可以为我完成所有这些工作,并且可以通过 Firebase 函数工作?

【问题讨论】:

  • 如果您认为我的回答对您有帮助,请考虑点赞,接受它

标签: firebase oauth-2.0 google-cloud-functions


【解决方案1】:

为了让您将 OAuth 2.0 连接到 Cloud Functions,确实,您提供的文档将是实现这一目标的官方文档。我理解你的观点,关于你的问题,记住状态并将令牌与访问相关联,这实际上会非常有帮助。

要回答您的问题,没有一个库可以为您完成所有这些工作。环顾四周,您似乎可以使用 JWT 令牌,它会为您提供一些预定义字段的选项,这可能有助于您更好地控制到期时间、令牌的用途等。如果您对它,这里有一个关于如何将它与 Cloud Functions 一起使用的很好的文档:Understanding OAuth2 and Deploying a Basic Authorization Service to Cloud Functions

不幸的是,除此之外,您似乎没有其他选择。出于这个原因,我建议您也向 Google's Issue Tracker 提出功能请求,以便他们了解未来更改/改进 OAuth 2.0 与 Cloud Functions 的工作方式的可能性。

如果这些信息对您有帮助,请告诉我!

【讨论】:

    【解决方案2】:

    我遵循了this guide 的很多指示。以下是我为后代提出的原始问题的答案:

    1. (记住状态)在客户端生成并保存在某处(我使用了localStorage)。将状态传递给 Firebase 函数,该函数会生成您的授权网址并将其返回给客户端。
    2. (保存访问令牌)授权后我重定向回客户端(与 Firebase 功能相反)。从客户端我解析身份验证代码并检查状态是否匹配。我将授权代码传递给 Firebase 函数以配置对最终访问令牌的请求。由于我从客户端调用了该函数,因此我可以访问 context 参数,该参数告诉我与访问令牌关联的 uid

    【讨论】:

    • 感谢您的回答。这有助于解决 cookie 不再是跨站点的问题(函数生成状态)
    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 2019-12-14
    • 2011-03-07
    • 2019-02-20
    • 2013-07-12
    • 2016-10-15
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多