Я использовал это:
https://github.com/Azure-Samples/active-directory-php-graphapi-web.git
для доступа к графику api, который работает. Мое приложение, зарегистрированное в Azure AD, может запросить API для получения списка пользователей в каталоге.
Но теперь я хочу перечислить папки для пользователя в каталоге. Эта страница
http://graph.microsoft.io/docs
говорит, что URL должен быть:
https://graph.microsoft.com/v1.0/me/drive/root/children
Когда я использую этот URL-адрес в своем вызове REST, я получаю
"code": "InvalidAuthenticationToken", "message": "CompactToken parsing failed with error code: -2147184105"
Имеет смысл, он получает знак от
https://graph.windows.net
Итак, я потерян. Существует так много разных версий API, начиная с потребительского класса onedrive (ранее skydrive), первого графика api (который я получаю через https://graph.windows.net ), API Office 365 (который я получаю через https: //login.microsoftonline.com ), и теперь график api (ранее универсальный api https://graph.microsoft.com ) Я просто не знаю, с чего начать искать правильную информацию.
Я работаю в PHP на данный момент, и я уверен, что это будет довольно низким в списке поддерживаемых платформ Microsoft, но любое направление о том, как работает генерация токена доступа в новейшей api по сравнению с o365 api по сравнению с другим графиком api (at graph.windows.net).
Является ли кто-то еще таким же запутанным, как я? Есть ли какая-то центральная ссылка, которая объясняет все различия между этими apis и как их получить?
Microsoft Graph должен предоставить вам одну конечную точку (и получение токенов) для доступа к данным, предлагаемым службами Office 365 и Azure AD. Дополнительную информацию см. На странице https://graph.microsoft.com, но, пожалуйста, используйте версию v1.0, так как это версия GA, подходящая для производственных услуг.
Что касается вашего вопроса о сервисном приложении без пользовательского интерфейса – вы можете получить токен доступа только для приложений, используя поток client_credential. (Это не документировано в документации Microsoft Graph, но оно поддерживается и описано в другом месте – просто установите ресурс https://graph.microsoft.com/ ). На портале управления Azure вам нужно будет выбрать «Разрешения для приложений», которые требуется вашему приложению. В настоящее время поддерживается доступ к почтовым ресурсам только для приложений, но приложение не поддерживает только один доступ к одному ресурсу диска (через график Microsoft). Скоро мы откроем это.
Надеюсь это поможет,
Конечной точкой https://login.microsoftonline.com
является конечная точка авторизации Azure AD, которая предоставляет страницу единого входа для входа в систему и аутентификации и получения кода авторизации.
Другие, такие как https://graph.microsoft.com
являются конечной точкой ресурса, которая построена на API REST и предоставляет ресурсы и услуги от Microsoft.
В частности, для конечной точки https://graph.windows.net
, объяснение на официальном сайте:
API-интерфейс Azure Active Directory Graph обеспечивает программный доступ к Azure Active Directory через конечные точки API REST. Приложения могут использовать API-интерфейс Azure AD Graph для выполнения операций создания, чтения, обновления и удаления (CRUD) данных каталога и объектов каталога, таких как пользователи, группы и организационные контакты.
https://graph.mircosoft.com
– это унифицированный API, который также включает в себя API от других служб Microsoft, таких как Outlook, OneDrive, OneNote, Planner и Office Graph, которые доступны через единую конечную точку с одним токеном доступа.
Обратитесь к AD Graph REST за дополнительной информацией.
Чтобы интегрировать офис 365 через Azure AD, вам необходимо проверить, есть ли у вас офис-арендатор 365, а ваш администратор-пользователь офиса 365 имеет разрешение на доступ к Azure AD. Вы можете обратиться к Deep Dive в унифицированный API Office 365 для пошагового руководства по интеграции унифицированного API Office 365.
Кроме того, вы можете обратиться к разделу «Начало работы с API-интерфейсами Office 365» на базе Microsoft Graph для создания примера PHP.