我的网络应用中有“Access custom claims on the client”中显示的逻辑,其中b64DecodeUnicode
的记录与here相同。
在Google或电子邮件登录后,ID令牌中的自定义声明可以进行base64解码,我可以将生成的json登录到控制台。
{"iss":"https://securetoken.google.com/my-app","name":"Joe Bloggs","picture":"https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg","aud": ... etc.
然而,在Facebook登录后,我看到错误:
Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
实际上,当我手动获取ID令牌的第二部分并尝试对其进行base64解码时,?
值(url)中的picture
后,它似乎已损坏。
解码后的字符串包含以下内容:
https://lookaside.facebook.com/platform/profilepic/\YLLMML͌L
但是希望字符串包含:
https://lookaside.facebook.com/platform/profilepic/?asid=
在撰写本文时,我正在使用最新的firebase(4.12.1)和firebaseui(2.7.0)软件包。
这是Firebase中的错误,即ID令牌是否被错误编码?或者我的方法是故障解码它?提前谢谢!
答案 0 :(得分:1)
这似乎是Firebase文档问题。使用jwt-decode解码令牌时,工作正常。深入研究jwt-decode source code, the line:
var output = str.replace(/-/g, "+").replace(/_/g, "/");
是解决这种情况的问题(相关令牌有' _')。