Firebase:登录 Facebook 后在客户端上解码自定义版权主张时出错



我的 Web 应用程序中的"访问客户端上的自定义声明"中显示了逻辑,其b64DecodeUnicode实现与此处记录的相同。

在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 解码时,它似乎在picture值 (url( 中?后损坏。

解码的字符串包含如下内容:

https://lookaside.facebook.com/platform/profilepic/YLL MML͌L

但希望字符串包含:

https://lookaside.facebook.com/platform/profilepic/?asid=

在撰写本文时,我使用的是最新的Firebase(4.12.1(和firebaseui(2.7.0(软件包。

这是Firebase中的错误吗,即ID令牌是否编码不正确? 还是我的解码方法有问题? 提前感谢!

这似乎是Firebase文档问题。 当使用jwt解码来解码令牌时,事情工作正常。 深入研究 jwt 解码源代码,该行:

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

是在这种情况下解决问题的方法(有问题的令牌有一个"_"(。

最新更新