小编Kem*_*aya的帖子

Firebase身份验证:一小时后无法刷新管理员自定义令牌

我认为Firebase Admin SDK缺少一个非常重要的功能(或者可能是其文档)。

TL; DR:如何使用Admin SDK刷新自定义令牌?

该文档(https://firebase.google.com/docs/auth/admin/manage-sessions)表示:

Firebase身份验证会话的寿命很长。每次用户登录时,用户凭据都会发送到Firebase身份验证后端,并交换Firebase ID令牌(JWT)和刷新令牌。Firebase ID令牌寿命很短,并且持续一个小时;刷新令牌可用于检索新的ID令牌。

好。但是如何?没有提及如何用新的自定义令牌替换刷新令牌。关于如何撤消刷新令牌等有很多文档...

但是,有一个REST api函数,其内容为(https://firebase.google.com/docs/reference/rest/auth/#section-refresh-token

将刷新令牌交换为ID令牌您可以通过向securetoken.googleapis.com端点发出HTTP POST请求来刷新Firebase ID令牌。

但是,您从此API调用获得的access_token(JWT)也不被接受。而且JWT的格式甚至不相似。以下是检索(解码)的自定义令牌的两个示例:使用Admin SDK的admin.auth()。createCustomToken(uid)方法

{
  "uid": "9N5veUXXXXX7eHOLB4ilwFexQs42",
  "iat": 1521047461,
  "exp": 1521051061,
  "aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
  "iss": "XXX@appspot.gserviceaccount.com",
  "sub": "XXX@appspot.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)

ii。与https://securetoken.googleapis.com/v1/token?key=[API_KEY]通话

{
  "iss": "https://securetoken.google.com/XXX",
  "aud": "XXX",
  "auth_time": 1521047461,
  "user_id": "9N5veUXXXXX7eHOLB4ilwFexQs42",
  "sub": "9N5veUXXXXX7eHOLB4ilwFexQs42",
  "iat": 1521051719,
  "exp": 1521055319,
  "email": "jabbar@gmail.com",
  "email_verified": false,
  "firebase": {
    "identities": {
      "email": [
        "jabbar@gmail.com"
      ]
    },
    "sign_in_provider": "password"
  }
}
Run Code Online (Sandbox Code Playgroud)

有关此主题的问题很多。也许Firebase团队的某人可以一劳永逸地回答它。见下面的链接

谢谢你的时间!!

firebase firebase-authentication

8
推荐指数
2
解决办法
2629
查看次数

Angular 2> Compodoc>在Github页面上提供/ docs

我正在使用compodoc为Angular项目生成文档。

现在,我正在手动(在本地)生成文档,然后再将回购推送到Github。/ docs文件夹由github页面提供。将docs文件包含在提交中会使提交变得令人困惑。如果compodoc脚本可以在github中执行并在其中生成docs文件夹,那将是非常好的。

我知道Github并不是构建代码的地方,但是据我所知,您可以使用Jeykll生成这种工作流。有没有人解决过这样的问题?

github-pages angular

4
推荐指数
1
解决办法
1196
查看次数

使用 Rollup 捆绑插件,但在客户端应用程序的捆绑包中导入重复的 Vue.js 包 (Nuxt)

亲爱的 Stack Overflow / Vue.js / Rollup 社区

对于使用 Vue 和 Rollup 的主插件开发人员来说,这可能是一个菜鸟问题。我会非常明确地写下这个问题,希望它将来可以帮助像我这样的其他菜鸟。

我有一个简单的插件可以帮助表单验证。该插件中的组件之一导入 Vue,以便以编程方式创建组件并在安装时附加到 DOM,如下所示:

import Vue from 'vue'
import Notification from './Notification.vue' /* a very simple Vue component */
...
mounted() {
  const NotificationClass = Vue.extend(Notification)
  const notificationInstance = new NotificationClass({ propsData: { name: 'ABC' } })
  notificationInstance.$mount('#something')
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作,并且该插件使用 Rollup 与如下配置捆绑在一起:

import vue from 'rollup-plugin-vue'
import babel from 'rollup-plugin-babel'
import { terser } from 'rollup-plugin-terser'
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'

export default {
  input: …
Run Code Online (Sandbox Code Playgroud)

plugins rollup webpack vue.js nuxt.js

3
推荐指数
1
解决办法
2201
查看次数