Firebase:Facebook登录后解码客户端上的自定义声明时出错

时间:2018-04-11 08:14:38

标签: firebase firebase-authentication firebaseui

我的网络应用中有“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令牌是否被错误编码?或者我的方法是故障解码它?提前谢谢!

1 个答案:

答案 0 :(得分:1)

这似乎是Firebase文档问题。使用jwt-decode解码令牌时,工作正常。深入研究jwt-decode source code, the line

var output = str.replace(/-/g, "+").replace(/_/g, "/");

是解决这种情况的问题(相关令牌有' _')。