Authentication 如何使用java脚本后端在AAD单点登录中使用访问令牌获取登录的用户详细信息(用户电子邮件id和用户名)?

Authentication 如何使用java脚本后端在AAD单点登录中使用访问令牌获取登录的用户详细信息(用户电子邮件id和用户名)?,authentication,windows-store-apps,azure-active-directory,Authentication,Windows Store Apps,Azure Active Directory,您好,我正在使用C#和xaml开发windows store 8.1应用程序 对于登录,我将使用JavaScript后端通过Windows Azure Active directory单点登录对用户进行身份验证 一旦用户登录并且我拥有访问令牌,如何使用应用程序中的访问令牌获取登录用户的用户电子邮件id和用户名 有人请提供一个使用访问令牌获取用户电子邮件的解决方案吗?如果您有访问令牌,那么它应该包含用户id值。要检索电子邮件地址,必须查询Graph API以获取用户详细信息。关于这一点的完整文档是

您好,我正在使用C#和xaml开发windows store 8.1应用程序

对于登录,我将使用JavaScript后端通过Windows Azure Active directory单点登录对用户进行身份验证

一旦用户登录并且我拥有访问令牌,如何使用应用程序中的访问令牌获取登录用户的用户电子邮件id和用户名


有人请提供一个使用访问令牌获取用户电子邮件的解决方案吗?

如果您有访问令牌,那么它应该包含用户id值。要检索电子邮件地址,必须查询Graph API以获取用户详细信息。关于这一点的完整文档是完整的,但简而言之,您应该发出如下的get请求,将AccessToken放在授权头中的“Bearer”后面

您可以在地址中使用用户主体名称或objectId。更好的是,您可以使用并调用他们的API来获取用户信息

Uri servicePointUri = new Uri("https://graph.windows.net");
Uri serviceRoot = new Uri(servicePointUri, "contoso.onmicrosoft.com");
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, accessToken);
IUser user = activeDirectoryClient.Users
    .Where(user => user.UserPrincipalName.Equals("alex@contoso.onmicrosoft.com"))
    .ExecuteAsync().Result.CurrentPage.ToList().SingleOrDefault();
完整的样品

Uri servicePointUri = new Uri("https://graph.windows.net");
Uri serviceRoot = new Uri(servicePointUri, "contoso.onmicrosoft.com");
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, accessToken);
IUser user = activeDirectoryClient.Users
    .Where(user => user.UserPrincipalName.Equals("alex@contoso.onmicrosoft.com"))
    .ExecuteAsync().Result.CurrentPage.ToList().SingleOrDefault();