我已经在我的应用上运行了Google的oauth2,其中id_token是一个以句点分隔的字符串。我读here,id_token分为三部分,第二部分包含实际有效负载。如果我拆开字符串并解码第二个值,我会得到我期望的帐户。我不明白的是,当我尝试我的妻子的帐户,如果我解析第二部分给json一个“意外的字符”错误。
我尝试从控制台抓取字符串并通过在线base64解码器运行它,并确实看到json没有得到正确的评估。
{ “ISS”: “accounts.google.com”, “子”: “111475728886332985448”, “AZP”: “74770364428-621332j2r657ish4jh94n9n1k0mplpgd.apps.googleusercontent.com”, “电子邮件”:“her.email@gmail .COM”, “at_hash”: “lSKFL86HsCeu7TU4tsYBTw”, “email_verified”:真, “AUD”: “74300369428-621332j2r657ish4jh94n9n1k0mplpgd.apps.googleusercontent.com”, “IAT”:1414192526, “EXP”:191819642
两个帐户之间可能会有什么不同,这会导致我的电子邮件返回有效的json而不是她的?
答案 0 :(得分:1)
id_token是JSON Web令牌(JWT),在本例中使用紧凑序列化。 JWT元素是base64url编码没有填充,这与普通base64编码略有不同,如下所示:https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-38#appendix-C
可在此处找到一个不错的id_token / JWT解码器:http://jwt.io/
你自己的id_token可能很幸运,因此它不需要填充。