Как мне создать токен авторизации с новым API Microsoft Graph?

Я использовал это:

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, в отличие от API o365, по сравнению с другим графиком. API (на graph.windows.net) будет принята с благодарностью.

Кто-нибудь еще так же смущен, как и я?
Есть ли какая-то центральная справка, которая объясняет все различия между этими API и как получить к ним доступ?

5

Решение

График Microsoft должен предоставить вам одну конечную точку (и получение токена) для доступа к данным, предлагаемым службами Office 365 и Azure AD. Пожалуйста, посетите https://graph.microsoft.com для получения более подробной информации — но, пожалуйста, используйте версию v1.0, поскольку это версия GA, которая подходит для производственных служб.

Что касается вашего вопроса о сервисном приложении без пользовательского интерфейса — вы можете получить токен доступа только для приложения, используя поток client_credential. (В настоящее время это не задокументировано в документации Microsoft Graph, но поддерживается и описывается в другом месте — просто установите ресурс, чтобы быть https://graph.microsoft.com/). На портале управления Azure вам нужно выбрать «Права доступа к приложениям», которые требуются и вашему приложению. В настоящее время доступ к почтовым ресурсам только для приложений поддерживается, но доступ только для приложений к одному диску (через граф Microsoft) не поддерживается. Мы будем искать, чтобы открыть это в ближайшее время.

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

4

Другие решения

Конечная точка https://login.microsoftonline.com является конечной точкой авторизации Azure AD, которая предоставляет страницу единого входа для пользователей, которые входят в систему и проходят проверку подлинности & получить код авторизации.

Остальным нравится https://graph.microsoft.com является конечной точкой ресурса, которая построена на REST API и предоставляет ресурсы и услуги от Microsoft.

В частности, до конечной точки https://graph.windows.net, объяснение на официальном сайте:

API-интерфейс Azure Active Directory Graph обеспечивает программный доступ к Azure Active Directory через конечные точки REST API. Приложения могут использовать API-интерфейс Azure AD Graph для выполнения операций создания, чтения, обновления и удаления (CRUD) над данными каталога и объектами каталога, такими как пользователи, группы и контакты организации.
А также https://graph.mircosoft.com это унифицированный API, который также включает в себя API-интерфейсы других служб Microsoft, таких как Outlook, OneDrive, OneNote, Planner и Office Graph, доступ к которым осуществляется через единую конечную точку с одним токеном доступа.

Ссылаться на AD Graph REST для дополнительной информации.

Чтобы интегрировать Office 365 с помощью Azure AD, необходимо проверить, есть ли у вас клиент Office 365 и имеет ли администратор пользователя Office 365 право доступа в Azure AD. Вы можете обратиться к Глубокое погружение в унифицированный API-интерфейс Office 365 пошаговое руководство по интеграции унифицированного API Office 365.

Кроме того, вы можете обратиться к Начните работу с API Office 365 на базе Microsoft Graph создать пример PHP.

3

Я действительно изо всех сил старался импортировать живые контакты. Но после нескольких дней R&D я нашел https://dev.office.com/blogs/outlook-rest-api-v1-0-office-365-discovery-and-live-connect-api-deprecation что заставило меня переключиться на график Microsoft. Я также пробовал с лазурной документацией и другими вещами, но я нашел это очень запутанным, но все же я не был ясен с этим. Так что я реализовал следующее в php, которое оказалось К счастью, успешным. Просто выполните следующие действия: 1) Создайте приложение в https://apps.dev.microsoft.com a) Сгенерируйте новый пароль. Сохраните идентификатор приложения и пароль при себе. б) Добавить платформу как веб и добавить URL перенаправления с https, так как можно использовать только https, а http не применяется.
c) Проверьте поддержку Live SDK в разделе Дополнительные параметры и сохраните.

2) передать область видимости в URL как contacts.read, так как нам нужны контакты пользователя, вошедшего в систему.

  $client_id="YOUR_CLIENT_ID";
$redirect_uri = SiteUrl.'hotmail-contact';
$url="https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=".$client_id."&response_type=code
&redirect_uri=".$redirect_uri."&response_mode=query
&scope=offline_access%20user.read%20mail.read%20contacts.read
&state=12345";

3) После успешной аутентификации он вернет код авторизации. Теперь после получения кода мы получаем запрос на токен по запросу curl post на https://login.live.com/oauth20_token.srf с постполями как

  $fields=array(
'code'=>  urlencode($auth_code),
'client_id'=>  urlencode($client_id),
'client_secret'=>  urlencode($client_secret),
'redirect_uri'=>  urlencode($redirect_uri),
'grant_type'=>  urlencode('authorization_code')
);

4) Чтобы получить контакты

$ url = ‘https://graph.microsoft.com/v1.0/me/contacts
мы можем даже применить фильтры к ним

Теперь запрос curl с параметром url и token

  public function curl_use_token($url,$token) {

$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
//  curl_setopt($ch,CURLOPT_HTTPHEADER,array('HeaderName: HeaderValue'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:Bearer '.$token));
//  curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization", "Bearer " + $token));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$data = curl_exec($ch);
curl_close($ch);
// print(gettype($data));
// print($data);
return $data;
}

5) После получения данных возвращаемые данные будут не в чистом формате json, поэтому мы можем извлечь из данных только часть json, применив регулярное выражение, и после его декодирования мы сможем использовать его.
Спасибо за прочтение

0
По вопросам рекламы [email protected]