【问题标题】:Setting the token in ngx-admin for connection to Firebase在 ngx-admin 中设置令牌以连接到 Firebase
【发布时间】:2018-09-22 01:30:37
【问题描述】:

我正在尝试将我的 ngx-admin 配置为使用 REST API 连接到 Firebase。 Stack Overflow 上的大多数帖子都指示使用 Firebase 的 SDK 重写身份验证代码。这不是我想要的。相反,ngx-admin 已经设计为使用 REST API 进行身份验证,Firebase 也支持这一点。因此,我决定采用这种方法尽可能多地使用 ngx-admin 代码库。

我在core.module.ts的NB_CORE_PROVIDERS下的设置如下(为简单起见只显示登录设置):

providers: {
      email: {
        service: NbEmailPassAuthProvider,
        config: {
          baseEndpoint: 'https://www.googleapis.com/identitytoolkit/v3/relyingparty',
          delay: 3000,
          login: {
            rememberMe: true,
            endpoint: '/verifyPassword?key='+environment.firebase.apiKey,
          },
          // ...
          token: {
            // How to set this properly for Firebase?
          }, 
        },
      },
    },

我的困难在于如何为 Firebase 正确设置令牌。 https://akveo.github.io/nebular/#/docs/auth/getting-user-token 的教程说

默认情况下,Nebular 期望您的令牌位于 JSON 响应的 data.token 键下

这将转换为@nebular/auth/providers/email-pass-auth.provider.ts 中的以下默认设置:

token: {
  key: 'data.token',
  getter: (module: string, res: HttpResponse<Object>) => getDeepFromObject(res.body,
        this.getConfigValue('token.key')),
},

本教程随后给出了一个示例,假设:

我们的 API 返回一个令牌,只是 {token: 'some-jwt-token'} 没有将您的响应包装在数据属性中

这转化为:

token: {
  key: 'token', // this parameter tells Nebular where to look for the token
},

首先我尝试跳过令牌设置(这意味着我使用默认设置,即key: 'data.token'。虽然我可以获得 200 状态代码(这意味着我成功连接到 Firebase),但我收到了以下错误:@987654329 @

然后我尝试了key: 'token',它给了我一个类似的错误。

在查阅 https://firebase.google.com/docs/reference/rest/auth/#section-sign-in-email-password 的 Firebase 文档后,我发现 Firebase 的响应负载包含六个属性:kind, idToken, email, refreshToken, expliresIn, localId, registered。然后我尝试了key: 'idToken',这次成功了。我可以成功登录 Firebase。尝试相同的注册也成功地在 Firebase 中注册了我,我可以从 Firebase 控制台进行验证。

但是,这只会返回六个属性之一。我尝试了key: 'data',但它给了我与上面类似的错误。如何正确配置令牌密钥,以便可以存储令牌的所有六个属性?

或者,我是否应该不尝试获取其他属性,而应该坚持使用idToken?在这种情况下,当 API 在负载中返回其他内容时,我如何指定不同的令牌(例如,当请求电子邮件验证时,Firebase 仅在负载中返回 kindemail)。

非常感谢。

【问题讨论】:

    标签: angular rest firebase firebase-authentication token


    【解决方案1】:

    试试这个:

      key: 'idToken'
    },
    

    它对我有用,并且 authResult 成功。 良好的编码;

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 1970-01-01
      • 2019-09-24
      • 2019-12-05
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      相关资源
      最近更新 更多