2016-07-28 2 views
1

Я хочу добавить функцию в свое приложение, чтобы он мог добавлять события календаря в outlook.com без взаимодействия с пользователем.Получить токен доступа Office 365 API без взаимодействия с пользователем

Все примеры, которые я видел, требуют от пользователя входа в систему, чтобы иметь доступ к токену офиса 365 api. Как получить этот токен без взаимодействия с пользователем?

ответ

1

Вы можете использовать Реквизит клиента запросить маркер вместо OAuth 2.0 Код Grant потока.

Вот запрос для справки:

POST https://login.microsoftonline.com/<tenantId>/oauth2/token HTTP/1.1 
Content-Type: application/x-www-form-urlencoded 

grant_type=client_credentials 
&client_id=<clientId> 
&client_secret=<clientSecret> 
&resource=https://outlook.office.com 

А вот образец, используя Microsoft.IdentityModel.Clients.ActiveDirectory запросить Hte фишку:

public static async Task<string> GetTokenAsync(string resource, string clientId, string secrect) 
    { 
     string authority = "https://login.microsoftonline.com/{yourTenantName}"; 
     AuthenticationContext authContext = new AuthenticationContext(authority); 

     ClientCredential clientCredential = new ClientCredential(clientId, secrect); 
     AuthenticationResult authResult=await authContext.AcquireTokenAsync(resource, clientCredential); 
     return authResult.AccessToken; 
    } 

Более подробно о Office 365 REST, пожалуйста, обратитесь here.

+0

Если я правильно понимаю, мне нужно заплатить, чтобы получить tenantId? –

+0

Да. Вы можете войти в классический портал Azure, и вы можете получить tenantId с URL-адреса браузера, например https://manage.windowsazure.com/rekenoutlook.onmicrosoft.com#Workspaces/ActiveDirectoryExtension/Directory/{tenantId}/directoryQuickStart. –

Смежные вопросы