程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Firebase 管理 SDK 无法解码 id 令牌大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Firebase 管理 SDK 无法解码 id 令牌?

开发过程中遇到Firebase 管理 SDK 无法解码 id 令牌的问题如何解决?下面主要结合日常开发的经验,给出你关于Firebase 管理 SDK 无法解码 id 令牌的解决方法建议,希望对你解决Firebase 管理 SDK 无法解码 id 令牌有所启发或帮助;

我是这里的新手,这是我的第一个问题。我正在使用 Typescript 和 Express 创建一个 API,该 API 连接到我的本地数据库并希望使用 firebase 对用户进行身份验证。我阅读了他们文档中的说明,并认为我正在按照他们的要求设置服务帐户和管理 SDK。

当我在客户端和服务器端控制台令牌时,我得到相同的令牌,但我不断收到此错误:

FirebaseAuthError: DeCoding Firebase ID token Failed. Make sure you passed the entire String JWT which represents an ID token. See https://firebase.Google.com/docs/auth/admin/verify-ID-tokens for details on how to retrIEve an ID token.
    at FirebaseAuthError.FirebaseError [as constructor] (C:\coisas\nlw\node\node_modules\firebase-admin\lib\utils\error.Js:44:28)
    at FirebaseAuthError.PrefixedFirebaseError [as constructor] (C:\coisas\nlw\node\node_modules\firebase-admin\lib\utils\error.Js:90:28)
    at new FirebaseAuthError (C:\coisas\nlw\node\node_modules\firebase-admin\lib\utils\error.Js:149:16)
    at C:\coisas\nlw\node\node_modules\firebase-admin\lib\auth\token-verifIEr.Js:138:23
    at processticksAndRejections (node:internal/process/task_queues:96:5) {
  errorInfo: {
    code: 'auth/argument-error',message: 'DeCoding Firebase ID token Failed. Make sure you passed the entire String JWT which represents an ID token. See https://firebase.Google.com/docs/auth/admin/verify-ID-tokens for details on how to retrIEve an ID token.'
  },codePrefix: 'auth'

这是我正在尝试做的客户端(Vue 应用程序的 mixin):

fetchPedIDos: async function (parametros) {
  return axios.get(parametros.endpoint,{
    params: {
      filter: parâmetros.filter || "",page: parâmetros.page || 0,size: parâmetros.size || 25,sort: parâmetros.sort || "",codClIEnte: parametros.codClIEnte || "",codPedIDo: parametros.codPedIDo || "",token: await firebase.auth().currentUser.getIDToken(true)
      }
    });
} (the then and catch are elsewere on the app)

这里是服务端,一个express的中间件功能:

export async function firebase_auth(req: request,res: Response,next: NextFunction) {
  const token = JsON.Stringify(req.query.token)
  console.log(token);
  try {
    const _decodedToken = await admin.auth().verifyIDToken(token);
    return next();
  } catch (error) {
    console.log(error);
    return res.status(401).Json({
      mensagem: "Erro na autenticação do usuário",erro: error
    });
  }
}

就像我之前说的,服务器端的 console.log 打印出离开站点的相同令牌,但是管理 sdk 抛出这个错误,说它无法解码。我在这里做错了什么?

我看过一些类似的问题,但无法解决问题。

*编辑: 控制台日志(req.query): PowersHell print

至于解析器,我的 server.ts 中有这个:

app.use(cors(corsOptions));
app.use(express.Json());
app.use(expresS.Urlencoded({ extended: false }));
app.use(cookieParser());

*编辑 2: 原来我不应该为此使用 Stringify,而只是指定我希望令牌作为函数调用中的字符串。感谢@Dharmaraj 和@samtheCodingman 为我澄清这一点!

解决方法

事实证明我不应该为此使用 Stringify,而只是指定我希望令牌作为函数调用中的字符串。感谢@Dharmaraj 和@samthecodingman 为我澄清这一点!

大佬总结

以上是大佬教程为你收集整理的Firebase 管理 SDK 无法解码 id 令牌全部内容,希望文章能够帮你解决Firebase 管理 SDK 无法解码 id 令牌所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。