Microsoft Graph REST API v1.0 - список личных контактов с использованием разрешений приложений - PullRequest
0 голосов
/ 28 мая 2019

Я зарегистрировал веб-приложение на портале Azure, предоставил ему разрешение Contacts.Read, дал ему разрешение администратора и теперь пытаюсь составить список личных контактов определенного пользователя с помощью Microsoft Graph REST API v1.0 с помощью этого приложения.

Сначала я пытаюсь получить токен доступа, отправив запрос POST на https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token со следующими параметрами тела: scope=https://graph.microsoft.com/contacts.read, grant_type=client_credentials, мой client_id и мой client_secret.

В ответ я получаю сообщение об ошибке 400 Bad Request. Тело: {"error":"invalid_scope","error_description":"AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid. The scope https://graph.microsoft.com/contacts.read is not valid."}

Когда я заменяю параметр области действия в запросе токена следующим образом: scope=https://graph.microsoft.com/.default, я фактически получаю 200 OK и мой токен на предъявителя в ответ.

Но когда я запрашиваю личные контакты пользователя, отправив GET запрос на https://graph.microsoft.com/v1.0/users/{user_id}/contacts с этим токеном, я получаю 401 Unauthorized в ответ со следующей ошибкой:

"code": "NoPermissionsInAccessToken", "message": "The token contains no permissions, or permissions can not be understood.",

Я также попытался заменить значение scope в моем запросе токена на {app_id_uri}/.default и {app_id_uri}/contacts.read, но безуспешно.

Так как мне перечислить личные контакты пользователей с помощью Microsoft Graph REST API v1.0? Что я делаю не так?

РЕДАКТИРОВАТЬ: скриншот Разрешения: enter image description here

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я предоставил моему приложению неправильные разрешения. Это были разрешения Contacts.Read и User.Read.All в разделе Exchange вместо раздела Microsoft Graph.

Я предоставил эти разрешения в разделе Microsoft Graph, и все заработало. На самом деле разрешение Contacts.Read достаточно.

P.S. область действия https://graph.microsoft.com/.default

0 голосов
/ 28 мая 2019

Сохранить сферу:

сфера = https://graph.microsoft.com/.default

Вам потребуются разрешения для приложений (Admin):

  • users.read.all
  • contacts.read

Я бы выбрал версии для чтения и записи, если вы хотите добавить / отредактировать контакты

Я также использую делегированное разрешение с offline_access

вы установили контакты в устаревшем обмене, вместо этого добавьте разрешение на график контактов.

...