您正在使用C#和xaml
开发Windows应用商店8.1应用要登录,请使用JavaScript后端使用Windows Azure Active Directory单点登录对用户进行身份验证。
一旦用户登录并且我有访问令牌,如何使用应用程序中的访问令牌获取登录用户的用户电子邮件ID和用户名?
有人请给我一个使用访问令牌获取用户电子邮件的解决方案吗?
答案 0 :(得分:2)
如果您有访问令牌,则应包含用户ID值。要检索电子邮件地址,您必须查询Graph API以获取用户详细信息。关于它的完整文档是here,但简而言之,您应该发出如下所示的get请求,将AccessToken置于授权标题中,然后是#34; Bearer"。
GET https://graph.windows.net/contoso.onmicrosoft.com/users/Alex@contoso.onmicrosoft.com?api-version=2013-04-05 HTTP/1.1
Authorization: Bearer eyJ0eX ... FWSXfwtQ
Content-Type: application/json
您可以在地址中使用用户主体名称或objectId。更好的是,您可以使用Azure AD Graph Client nuget package并调用其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();
See here获取完整样本。