C# 如何从MobileServiceUser获取用户名、电子邮件等?

C# 如何从MobileServiceUser获取用户名、电子邮件等?,c#,wpf,azure,azure-mobile-services,azure-active-directory,C#,Wpf,Azure,Azure Mobile Services,Azure Active Directory,经过大量的挖掘,我已经让我的WPF应用程序通过Azure移动服务为用户签名。我的移动服务已连接到我已设置的Azure Active Directory。但是,当我使用MobileServiceClient.LoginAsync(…)登录用户时,MobileServiceUser用户ID似乎处于无法读取的哈希中。例如,它看起来像:“Aad:x3pvh6mmo2agtyhdca3hwn6uby91rxxxxxxxxx”。这到底是什么 我想获取用户的显示名称以供使用,但我不知道如何使用 这是Azure

经过大量的挖掘,我已经让我的WPF应用程序通过Azure移动服务为用户签名。我的移动服务已连接到我已设置的Azure Active Directory。但是,当我使用MobileServiceClient.LoginAsync(…)登录用户时,MobileServiceUser用户ID似乎处于无法读取的哈希中。例如,它看起来像:“Aad:x3pvh6mmo2agtyhdca3hwn6uby91rxxxxxxxxx”。这到底是什么


我想获取用户的显示名称以供使用,但我不知道如何使用

这是Azure Active Directory的用户ID。您需要创建一个服务,通过服务公开您的AAD信息,并使用从用户处获得的访问令牌检索附加信息

第一:

    ServiceUser user = this.User as ServiceUser;
    var identities = await user.GetIdentitiesAsync();
    var aad = identities.OfType<AzureActiveDirectoryCredentials>().FirstOrDefault();
    var aadAccessToken = aad.AccessToken;
    var aadObjectId = aad.ObjectId;
ServiceUser=this.user作为ServiceUser;
var identies=await user.getidentiesasync();
var aad=identifications.OfType

查看示例请求部分。您应该为查询提供您获得的访问令牌和objectId。

这里是另一种方法,在阅读了.Net中有关标识的部分后,它讨论了声明是如何成为框架的标准部分。因此,一旦您获得@beast提供的凭据对象

var aad = identities.OfType<AzureActiveDirectoryCredentials>().FirstOrDefault();

我这样做是为了提取在表中交叉引用的用户id。仅供参考,我使用的是App Service,但我相信移动服务中的credentials对象是相同的

我在通过graph API进行查询时发现访问令牌丢失或格式错误。有什么想法吗?可能需要比你在这里描述的更多的细节。只要您确保您的访问令牌存在于您的请求头中,它就应该可以工作。这个答案中的“this”对象是什么?
if (aad != null)
{
    var d = aad.Claims;
    var email = d[ClaimTypes.Email];
}