我按照本教程进行了操作,已经到了我正在解码返回的令牌并提取电子邮件地址(应存储在preferred_username属性中)的地步,即以下代码:
decoded_token = Base64.urlsafe_decode64(encoded_token)
jwt = JSON.parse(decoded_token)
email = jwt['preferred_username']
问题是返回的对象不包含此属性,我返回的内容类似于以下内容:
{
"ver":"2.0",
"iss":"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0",
"aud":"0ab6433e-84fc-469b-8c72-41f7a0241a61",
"exp":1458142389,
"iat":1458055989,
"at_hash":"0OYaLKpTTdHNBrQNOqwQ0Q",
"sub":"AAAAAAAAAAAAAAAAAAAAAC1TrOaOmvInYrFAyrQjlFI",
"tid":"9188040d-6c67-4c5b-b112-36a304b66dad"
}
快速浏览一下规范表明我从 Office 365 中获取了正确的对象,因为首选用户名被提及为潜在的声明,但它不在我返回的对象中。
有可能我没有使用正确的参数调用get_token函数,但是该库的文档非常稀疏,所以我无法确定。
这是 Office 365 端的错误、教程错误还是我自己做错了什么?