我正在使用Office 365 API工具, 我想获取登录的用户配置文件,电子邮件,名称......
我希望用户登录,然后我就可以获得他的电子邮件地址。
怎么做?
我试过了:
public static async Task<string> GetEmail()
{
var client = await EnsureClientCreated();
var x = await client.Me.ExecuteAsync();
return x.DisplayName;
}
public static async Task<ExchangeClient> EnsureClientCreated()
{
if (_discoveryContext == null)
{
_discoveryContext = await DiscoveryContext.CreateAsync();
}
var dcr = await _discoveryContext.DiscoverResourceAsync(ServiceResourceId);
_lastLoggedInUser = dcr.UserId;
return new ExchangeClient(ServiceEndpointUri, async () =>
{
return (await _discoveryContext.AuthenticationContext.AcquireTokenSilentAsync(ServiceResourceId, _discoveryContext.AppIdentity.ClientId, new Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier(dcr.UserId, Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifierType.UniqueId))).AccessToken;
});
}
但这只得到显示名称,我也需要电子邮件。 提前谢谢。
答案 0 :(得分:0)
Intellisense是您在Visual STudio项目中使用类库的朋友,当您添加连接的服务时,它会在该示例文件中创建。
string email = x.Mail;
会得到你想要的东西。
答案 1 :(得分:0)
Jeremy你是否想要Mail属性是正确的。我不确定,但我不记得电子邮件地址是否在ExchangeClient中浮出水面。返回Connected Services窗口并添加Users和Group API。这将为您提供获取用户电子邮件地址所需的内容。
Microsoft.Office365.ActiveDirectory.AadGraphClient aadClient = await ActiveDirectoryApiSample.EnsureClientCreated();
var currentUser = await(aadClient.Users
.Where(i => i.ObjectId == "Logged in user's ID from ActiveDirectoryApiSample")
.ExecuteSingleAsync());
string usermail = currentUser.Mail;