从 Xero 的 OAuth 流中获取用户电子邮件的惯用方法是什么

问题描述

我有一个网络应用程序,它使用 Xero.NetStandard.oauth2client 包来允许使用 Xero 进行身份验证。

一旦用户重定向回我的应用程序,我就会使用 IXeroClient.RequestAccesstokenAsync 方法将他们的代码交换为 IXeroToken 对象,这允许我按预期调用 Xero API。

我不知道该怎么做,而且在官方文档中似乎找不到的一件事是,我如何从 {{1} } 对象。

根据标准,信息在 IXeroToken 属性中编码为 JWT 字符串,但我不确定如何在没有额外依赖的情况下从中获取信息。

解决方法

内置的 IdToken 类可以反序列化 System.IdentityModel.Tokens.Jwt.JwtSecurityToken 负载。

IdToken 包含令牌中的所有声明。

相关类型有:

  • new JwtSecurityToken(accessToken.IdToken).Claims - 用户的电子邮件
  • email - 用户的 ID (guid)
  • xero_userid - 用户的名字
  • given_name - 用户的姓氏

权利要求的存在显然以设置的适当范围为条件。