【问题标题】:How can I use Firebase custom auth with an openID provider?如何将 Firebase 自定义身份验证与 openID 提供程序一起使用?
【发布时间】:2017-11-26 19:08:07
【问题描述】:

我目前有一个游戏的网络项目,我希望用户能够登录以共享内容,目前使用谷歌的 firebase 身份验证完成(并且工作正常)。

但我希望人们能够通过 Steam 进行身份验证(使用 Oauth2)

firebase 参考/API (https://firebase.google.com/docs/auth/web/custom-auth) 没有帮助,因为我找不到我需要实现的确切(工作)示例,而且我对 Oauth2 或 Firebase 还没有太多经验。

http://steamcommunity.com/dev 我得到了我的 API 密钥,我应该使用“http://steamcommunity.com/openid”作为提供者。

我尝试过这样使用它:

var provider = new firebase.auth.OAuthProvider("steamcommunity.com/openid");

firebase.auth().signInWithPopup(provider).catch(function(error)
{
  console.log(error.message);
});

这是适用于所有默认提供程序(Google、Twitter、Facebook 等)的基本功能

但是我在控制台中得到一个“不支持的提供程序 ID”,我显然在某处忘记了一些东西,但我真的不知道它到底是什么(我知道我应该在某处输入来自 steam 的 API 密码)而且我不确定从哪里开始寻找(例如,我是否需要更改我的 firebase 设置中的任何内容,..)

如果有人可以帮助我解决我的问题或指出一个我可以通过的工作示例,那将非常有帮助,因为我的谷歌搜索只将我带到了官方的 firebase 参考和 API,而这些并没有真正帮助我到目前为止。

【问题讨论】:

    标签: javascript firebase oauth-2.0 firebase-authentication steam


    【解决方案1】:

    firebase.auth.OAuthProvider 目前仅支持现有提供程序,尚未扩展以支持其他提供程序。 您将需要使用自定义身份验证。我刚刚用谷歌搜索并找到了这个用于 Steam 身份验证的库:https://www.npmjs.com/package/steam-login。您可以使用它通过 Steam 登录,然后获取 Steam 用户 ID,使用 Firebase Admin SDK 使用它创建一个自定义令牌:https://firebase.google.com/docs/auth/admin/create-custom-tokens 使用该 Steam UID,然后将自定义令牌发送到客户端以使用 @ 完成登录987654325@:https://firebase.google.com/docs/auth/web/custom-auth

    【讨论】:

    • 如果您的客户从不使用 firebase SDK 来读取/写入您的 firebase 数据库,是否有必要创建自定义 firebase 令牌?我可以从 IdP 客户端接收一个 ID 令牌,并将其添加到我的每个自定义 REST 服务器调用的标头中吗?服务器可以通过 IdP 验证令牌是否有效,然后通过 Admin SDK 允许读/写。我还可以注销 IdP,客户端令牌将不再有效。如果没有 Firebase 令牌,我是否会遇到困难?
    • 是的,如果您在服务器端通过管理 SDK,您可以这样做。
    【解决方案2】:

    您可以使用 GCP 提供的 Identity Platform 来做到这一点。您可以在以下链接中找到文档。您需要有一个启用结算功能的 Firebase 项目才能执行此操作。

    https://cloud.google.com/identity-platform/docs/web/oidc

    首先,您必须在 GCP 控制台中配置新的 OpenID Connect 提供程序。然后,您可以像通常与其他 Firebase 提供的 OAuth 服务一样使用 Firebase OAuthProvider

    我不会在这里解释每个步骤,因为文档包含您需要了解的所有内容。

    【讨论】:

    • 嗨,Ramesh,我目前正在设置这个 - 客户端 ID 将是您通过 Steam 平台获得的 API 密钥?乔什
    • @Josh90 不,客户端 ID 是另一回事。见this article
    猜你喜欢
    • 2021-01-03
    • 2017-03-03
    • 1970-01-01
    • 2022-08-07
    • 2020-04-10
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多