我认为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团队的某人可以一劳永逸地回答它。见下面的链接
谢谢你的时间!!
我正在使用compodoc为Angular项目生成文档。
现在,我正在手动(在本地)生成文档,然后再将回购推送到Github。/ docs文件夹由github页面提供。将docs文件包含在提交中会使提交变得令人困惑。如果compodoc脚本可以在github中执行并在其中生成docs文件夹,那将是非常好的。
我知道Github并不是构建代码的地方,但是据我所知,您可以使用Jeykll生成这种工作流。有没有人解决过这样的问题?
亲爱的 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)