0

我正在使用 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;
        });
    }

但这仅获得显示名称,我也需要电子邮件。提前致谢。

4

2 回答 2

0

Jeremy 是正确的,您需要 Mail 属性。我不确定,但我不记得电子邮件地址是否出现在 ExchangeClient 中。返回到 Connected Services 窗口并添加用户和组 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;
于 2014-09-04T05:28:23.430 回答
0

Intellisense 是您与 Visual STudio 项目中的类库的朋友,当您添加连接的服务时,这些类库会在该示例文件中创建。

string email = x.Mail;

会给你你想要的。

于 2014-08-21T02:12:17.003 回答