首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ngx-admin中设置连接到Firebase的令牌

在ngx-admin中设置连接到Firebase的令牌
EN

Stack Overflow用户
提问于 2018-04-12 03:07:34
回答 1查看 2K关注 0票数 0

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

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

代码语言:javascript
运行
复制
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中的下列默认设置

代码语言:javascript
运行
复制
token: {
  key: 'data.token',
  getter: (module: string, res: HttpResponse<Object>) => getDeepFromObject(res.body,
        this.getConfigValue('token.key')),
},

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

我们的API返回一个令牌作为{ token:‘’}而不是在data属性中包装您的响应

这意味着:

代码语言:javascript
运行
复制
token: {
  key: 'token', // this parameter tells Nebular where to look for the token
},

首先,我尝试跳过令牌设置(这意味着我使用默认设置,即key: 'data.token'。虽然我可以获得一个200状态代码(这意味着我成功地连接到Firebase),但我得到了以下错误:NbEmailPassAuthProvider: Token is not provided under 'data.token' key with getter 'function (module, res) { return Object(__WEBPACK_IMPORTED_MODULE_9__helpers__["getDeepFromObject"])(res.body, _this.getConfigValue('token.key')); }', check your auth configuration.

然后我尝试了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控制台进行验证。

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

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

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2019-01-14 21:30:25

试着用这个:

代码语言:javascript
运行
复制
  key: 'idToken'
},

它为我工作,与一个成功的authResult。良好编码;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49787339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档