当使用谷歌的OpenIDConnect身份验证系统时,可以在
以下是一个例子来自谷歌文档:
然而,请求
理想情况下,我希望获得个人资料信息(仅为
scope
参数中指定email
或profile
或两者都包括。如果您请求email
范围,则“电子邮件”和“email_verified”声明将包含在成功的OAuth2身份验证会话的一部分返回的id_token
中。以下是一个例子来自谷歌文档:
ID令牌的有效载荷
ID令牌是一个包含一组名称/值对的JSON对象。 这是一个为了可读性而格式化的示例:
{"iss":"accounts.google.com",
"at_hash":"HK6E_P6Dh8Y93mRNtsDB1Q",
"email_verified":"true",
"sub":"10769150350006150715113082367",
"azp":"1234987819200.apps.googleusercontent.com",
"email":"jsmith@example.com",
"aud":"1234987819200.apps.googleusercontent.com",
"iat":1353601026,
"exp":1353604926,
"hd":"example.com"
}
然而,请求
profile
范围似乎对 id_token 的内容没有任何影响。为了检索个人资料信息,您必须进行单独的 HTTP 请求到不同的端点(使用刚收到的 access_token 进行身份验证),以获取一个外观非常相似但包含更多信息的文档:{
"kind": "plus#personOpenIdConnect",
"gender": string,
"sub": string,
"name": string,
"given_name": string,
"family_name": string,
"profile": string,
"picture": string,
"email": string,
"email_verified": "true",
"locale": string,
"hd": string
}
理想情况下,我希望获得个人资料信息(仅为
name
)包含在id_token JWT中,而不必进行单独的调用。是否有办法指定其他字段并将它们作为声明包含在id_token中?如果没有,为什么email
会被特殊处理并返回到id_token中?