2

我从flutter移动应用程序接收到我的asp.net核心api的以下令牌,我需要将其发送到firebase api以验证我的令牌并获取firebase uid。我在 .net 核心中的代码是

   FirebaseToken decodedToken = await FirebaseAuth.DefaultInstance.VerifyIdTokenAsync(token);
   string uid = decodedToken.Uid;

我得到错误

输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。

我尝试在末尾添加 '=' 以使长度可被 4 整除。但是没有用。任何人都可以帮忙吗?

token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjZjZmMyMzViZDYxMGZhY2FlYzVlYjBhZGU5NTg5ZGE5NTI4MmRlY2QiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiUHJhYmhha2FyIiwiYWRtaW4iOnRydWUsImlzcyI6Imh0dHBzOi8vc2VjdXJldG9rZW4uZ29vZ2xlLmNvbS9ydXRodW1hbmEtYXBwIiwiYXVkIjoicnV0aHVtYW5hLWFwcCIsImF1dGhfdGltZSI6MTU5NTE3MTE4MCwidXNlcl9pZCI6IjVVTUVoY1pGUklQUVRZSXYyUkt4Tk01cTdHbzIiLCJzdWIiOiI1VU1FaGNaRlJJUFFUWUl2MlJLeE5NNXE3R28yIiwiaWF0IjoxNTk1MzYxNDQyLCJleHAiOjE1OTUzNjUwNDIsImVtYWlsIjoicHJhYmhha2FyYmhhdEBsaXZlLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwaG9uZV9udW1iZXIiOiIrOTE4NTUzNzUyNzQyIiwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJwaG9uZSI6WyIrOTE4NTUzNzUyNzQyIl0sImVtYWlsIjpbInByYWJoYWthcmJoYXRAbGl2ZS5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJwaG9uZSJ9fQ.N-fFCQHnJkdVcSqRQQ7XetEPQEeLCjOofjv3UogJlehLlUiJZhoKO6UWnb_liNxuTaFQ7tzvl03rHbm12na6KkhMup0J_UkC7HCyG6EtZmCgc8KmFRoYtHbztiCNI9v26QLPI_5C-KCnMDJdnvmGfuhh5NmmR5gC1LVuXMxZxaQFzcs1fkuA_8mCY1t4s0x0mQyeBUdrLVZnWdVSzM9-g1WZ0xrCrcsf7WTdWpuWeRmSIJSmNagP_l7R-uYUnTtwNISgFVn4mhSz4O1dqav7167TK2Z1PQD1QDhMA3FTIoYsc9izdlXQvmkbLxkq8dvhgxYVY"
4

2 回答 2

4

点不是无效标记。它是一个分隔符。该令牌由三个 base64 编码部分组成。看看 repl: https ://repl.it/@AlieksandrAlie7/ZestyActiveOutput#index.js

此外,您可能会注意到最后一部分包含无效字符。根据下表:

https://s3.amazonaws.com/stackabuse/media/decimal-to-base64-table.png

也许替换无效字符可以工作:

- => +
_ => /
于 2020-07-21T21:19:38.023 回答
0

此问题的一个可能原因是您收到的 idToken 在控制台输出中被截断,导致令牌无效。这是一个已报告的问题,请参见此处,Flutter 的print()方法似乎最多只能打印 1024 位,因此 idToken 可能会被截断。如果您希望令牌完全显示,请执行以下任一操作:

  • 使用调试模式,检查 idToken 值
  • 没有调试模式,使用log(token)方法 byimport 'dart:developer';代替print()
于 2022-02-08T15:01:10.277 回答