2014-08-20 3 views
0

Я использую Office 365 API инструменты, я хочу, чтобы получить вошедшую в профиле пользователя, адрес электронной почты, имя, ...Как получить данные пользователя из офиса 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

Intellisense - ваш друг с библиотеками классов внутри проектов Visual STudio, которые создаются в этом файле образца при добавлении подключенной услуги.

string email = x.Mail; 

получит то, что вы хотите.

+0

Нет почтовой системы! –

0

Джереми прав, что вам нужно свойство Mail. Я не уверен, но я не помню, появился ли адрес электронной почты в ExchangeClient. Вернитесь в окна подключенных служб и добавьте 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; 
Смежные вопросы