如何从 "getFirebase().auth().currentUser.getIdToken() "中获取字符串值。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从 "getFirebase().auth().currentUser.getIdToken() "中获取字符串值。相关的知识,希望对你有一定的参考价值。

我有一个 架构 应用,并且正在使用 火力基地 用于认证。

我有一个 NodesJS bakend服务器,使用 idToken 进行认证。

我正试图发送 idToken 到服务器,使用。

const idToken = getFirebase().auth().currentUser.getIdToken();

async function updateDataInDatabase(data, dispatch, getFirebase) {
    const idToken = getFirebase().auth().currentUser.getIdToken();
    console.log('Todo App: Updating data in database using idToken ', idToken);
    console.log('Todo App: Updating data in database using idToken ', idToken.i);
    try {
        await axios.post(`http://localhost:5000/app/todo/data`, JSON.stringify(data), {
            headers: { 'Content-Type': 'application/json', 'firebase-idToken': idToken },
        });
    } catch (err) {
        console.log(err.message);
        return err.message;
    }
}

但其记录为 undefined.

第一个 console.log 给了这个。

D {a: 0, i: undefined, c: D, b: null, f: null, …}
a: 2
b: null
c: null
f: null
g: false
h: false
i: "eyJhbGciOiJS[....]yCORe2rP5PDCvmnVBkEzqug4Qrje9DlqwUIASEM7jmBUgOHQLNKWeTpe9Yl2w"
__proto__: Object

这是一个 Object大写字母是什么?D 代表什么?

我想那时候的信物应该是 i 属性,所以我试着让 i 属性,购买第二个 console.log 也给出了以下内容。

undefined

怎么会这样?

答案

getIdToken 返回一个承诺,所以你需要在使用值之前等待它。

const idToken = await getFirebase().auth().currentUser.getIdToken();
另一答案

火力基地 SDK文档对以下内容进行了说明 getIdToken 办法:

getIdToken ( forceRefresh ? : boolean ) : Promise < string > 返回一个JSON Web Token (JWT),用于识别用户和Firebase服务。

如果当前的令牌没有过期,则返回它。否则,将刷新令牌并返回一个新的令牌。

参数 可选 forceRefresh: boolean 强制刷新,不管token是否过期。

返回 Promise

这意味着您在登录时得到的结果是 idToken 变量是一个 Promise 对象,而不是您所期望的 token literal。

你应该 await 对于 getIdToken 方法的返回值或使用 Promise#then 风格。

async function updateDataInDatabase(data, dispatch, getFirebase) {
    const idToken = await getFirebase().auth().currentUser.getIdToken();
    try {
        await axios.post(`http://localhost:5000/app/todo/data`, JSON.stringify(data), {
            headers: { 'Content-Type': 'application/json', 'firebase-idToken': idToken },
        });
    } catch (err) {
        console.log(err.message);
        return err.message;
    }
}

以上是关于如何从 "getFirebase().auth().currentUser.getIdToken() "中获取字符串值。的主要内容,如果未能解决你的问题,请参考以下文章

Object(...) 不是 applyMiddleware(thunk.withExtraArgument( getFirebase, getFirestore )) 的函数错误

如何从 MaterialButton.addOnCheckedChangeListener "as a lambda" 获取监听器

如果A(“整体”)有一组B(“部分”),如何将“部分”B从“整体”​​A转移到另一个?

如何从0开发一个Vue组件库并发布到npm

c语言中的变量的作用,如何从键盘中输入多个变量的值?

如何从 csv 字符串中获取地图