如何从Office 365 API工具获取用户数据

时间:2014-08-20 08:49:40

标签: api office365 office365-apps

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

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

2 个答案:

答案 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;