2015-06-17 2 views
1

Я настроил приложение на AzureAd, чтобы быть многопользовательским, я решил потребовать все разрешения для Windows Azure Active Directory и Office 365 Exchange Online.Доступ к календарю, почте и контактам пользователя с OAuthenticated

Я могу получить пользователя, чтобы предоставить разрешения, получить токены доступа, обновить их, OAuth работает для меня. Я всегда использовал ключевое слово «common» вместо идентификатора арендатора, потому что мое приложение многопользовательское.

Теперь я хотел бы иметь (CRUD) доступ к электронной почте пользователя, контактам и календарю с помощью этого токена. Вот моя проблема: я полностью потерял все возможные конечные точки API. Должен ли я использовать: graph.windows.net, outlook.office365.com, graph.microsoft.com? This page, похоже, предполагает, что graph.microsoft.com - это швейцарский армейский нож, который будет служить моей цели, но почему-то я не могу найти документ, который позволяет мне найти информацию, которую я ищу. Плюс, он, кажется, разрабатывается и может быть слишком неполным для того, что я хочу.

Если у меня возникли вопросы против outlook.office365.com, у меня ошибка 401.

Если я поставил свой токен доступа в this token analyzer, он кажется здоровым, хотя поле области видимости показывает только разрешения, которые я установил на портале AzureAd для Windows Azure Active Directory, а не Office 365 Exchange Online.

Я бы потерял, любая помощь будет приветствоваться ...

ответ

3

У вас есть выбор:

  1. вызова отдельных APIs услуги - Ваша проблема в том, что вы приобрели маркер для вызова AAD , а затем попытался использовать это для вызова Outlook - вам нужно сделать отдельный вызов для получения токена для outlook.office365.com через ADAL или через конечную точку маркера напрямую. Токен, полученный для AAD Graph, может ТОЛЬКО использоваться против AAD Graph. Точно так же токен, полученный для Outlook, можно использовать ТОЛЬКО для Outlook API.

Просто для уточнения - Azure AD OAuth может защитить/защищенные несколько веб-API, включая O365 API, Azure AD Graph, API управления ресурсов Azure, собственных API-интерфейсов и новой O365 единого API. В первом запросе маркера доступа вы указываете первый ресурс, который хотите/нужно вызвать. Это не обязательно должен быть AAD Graph, т. Е. Это не AFAIK по умолчанию. Основываясь на том, что согласен, вы имеете возможность запрашивать токены доступа, используя токен обновления (многоресурсный). Сообщение блога Vittorio, на которое вы ссылаетесь в своих комментариях, отлично справляется с этим.

  1. Позвоните в унифицированный API O365 (который находится в режиме предварительного просмотра) и задокументирован. Смотри ниже. Красота унифицированного API заключается в том, что вам нужно только приобрести токен, чтобы вызвать graph.microsoft.com, и ВСЕ объекты на этой конечной точке доступны вам и многое другое. Он удаляет характер молчания №1 и требование получения и управления токенами доступа для вызова этих разных конечных точек API. Однако # 1 в настоящее время GA, а унифицированный API - это только предварительный просмотр.

Более подробную информацию о # 2 см https://msdn.microsoft.com/en-us/office/office365/howto/office-365-unified-api-overview и поиск «унифицированный» в списке образцов здесь: https://msdn.microsoft.com/en-us/office/office365/howto/starter-projects-and-code-samples

Мы работаем над усовершенствованием единой документации по API. Если вы делаете чистые звонки REST, тогда я рекомендую начать с API explorer (и попробуйте такие вещи, как https://graph.microsoft.com/beta/me/events и https://graph.microsoft.com/beta/me/messages, чтобы получить ваши события календаря и почтовые сообщения), или API sandbox (который может отображать фрагменты кода JS и позволяет вам испытайте свой собственный достаточно легко).Как вы можете видеть на примерах REST, для доступа к функциям почты и календаря в унифицированных API, вы должны иметь возможность обменивать корни службы из Outlook на унифицированный API, т.е. - https://outlook.office365.com/v1.0 ->https://graph.microsoft.com/beta. В примере JS мы добавим больше возможностей здесь и дополнительные образцы.

ПРИМЕЧАНИЕ. Личные контакты, доступные в outlook.office365.com, пока недоступны в унифицированном API.

Надеюсь, что это поможет

+0

Спасибо за ваш ответ. За # 1: где я могу получить токен для outlook365? Я просматривал, но на странице, где я объяснял, как настроить мое приложение на портале azureAd, я всегда нахожусь в конце страницы, из которого, я думаю, я могу получить только графические маркеры API. Для # 2: единственный образец, который я нашел для javascript с использованием конечной точки Graph, ничего не делает с контактами или календарем. Я все еще не могу найти что-либо в унифицированном API для календаря, а для контактов - документ (https://msdn.microsoft.com/office/office365/HowTo/office-365-unified-api-in-depth) довольно неуловимо. Спасибо за ваш ответ, хотя я продолжу поиск. – qnilab

+0

Итак, я был очень смущен, но вот часть ответа для тех, кто, как я, не получил полностью особенность AzureAd OAuth: когда OAuthing против конечной точки AzureAd (login.microsoftonline.com), токен доступа и токен обновления. По умолчанию маркер доступа должен получить доступ к конечной точке Graph. Если вам нужен токен для outlook.office365.com, вы должны указать его в очень смутно документированном «ресурсе». Другой важный момент: токен обновления - токен обновления повторного использования! Это позволяет вам получить токен доступа для любого API, который вы используете через AzureAd! – qnilab

+0

Читайте это: http://www.cloudidentity.com/blog/2013/10/14/adal-windows-azure-ad-and-multi-resource-refresh-tokens/ – qnilab

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