Как диагностировать проблемы с разрешениями Graph с контактами и календарем - PullRequest
0 голосов
/ 20 декабря 2018

Проблемы с доступом к графическим ресурсам для конкретного пользователя.У большинства нет проблем.Этот конкретный пользователь проходит проверку подлинности с нашим клиентом через свою школьную учетную запись Outlook, которая, как я предполагаю, и заключается в том, в чем проблема.

Наш сервис пытается создать определенную папку с использованием конечной точки /me/contactFolders.Когда мы делаем сообщение, мы получаем ошибку, что the resource could not be discovered.Немного покопавшись, я решил войти под своим аккаунтом в обозреватель графов и не смог запросить конечные точки, такие как /me/contacts, /me/contactFolders, /me/events и т. Д. Ни один из предоставленных примеров не работал для извлечения каких-либо данных.Я предполагаю, что это связано с разрешением учетной записи пользователя, но я не уверен, какие разрешения им понадобятся для доступа к календарям и контактам (мы правильно устанавливаем области и делегированные разрешения, поскольку эта проблема связана только с парой пользователей).

Это сообщение об ошибке, которое я получил при попытке запросить график:

{
    "error": {
        "code": "ResourceNotFound",
        "message": "Resource could not be discovered.",
        "innerError": {
            "request-id": "5cfd7b28-a915-42cf-9bce-a8a2509c3f1f",
            "date": "2018-12-20T18:48:34"
        }
    }
}

Любая помощь в диагностике этой проблемы будет принята с благодарностью !!

1 Ответ

0 голосов
/ 28 декабря 2018

Если вы не смогли декодировать токен, то, скорее всего, вы столкнулись с одной из следующих проблем:

  1. Вы неправильно получили токен

  2. Вы пытаетесь декодировать код авторизации, а не токен доступа (т. Е. Строку, полученную с первого шага OAuth, а не со второго).

  3. Маркер предназначен для учетной записи Microsoft (она же MSA, менее известная как учетная запись Xbox или Outlook.com).

Вы можете декодировать только токены, выпущенные Azure AD (AAD).Школьные учетные записи (т.е. заканчивающиеся на .edu) в основном такие же, как и рабочие учетные записи, они принадлежат и управляются Azure Active Directory.

Что касается проверки того, какие услуги предоставляются для текущего пользователя, вы можете получить их из конечной точки /me, если вы запросили область действия User.Read или User.ReadWrite.Обратите внимание, что эта информация не включена по умолчанию, поэтому вам нужно специально запросить provisionedPlans.Например, следующий запрос вернет текущего пользователя id, userPrincipalName и его список provisionedPlans (то есть услуг):

https://graph.microsoft.com/v1.0/me/?$select=id,userPrincipalName,provisionedPlans

Результаты довольно понятны, но в вашемВ конкретном случае вы ищете службу с именем exchange (часто их несколько, но все они должны отражать один и тот же статус):

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,userPrincipalName,provisionedPlans)/$entity",
    "id": "48d31887-5fad-4d73-a9f5-3c356e68a038",
    "userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
    "provisionedPlans": [
        {
            "capabilityStatus": "Enabled",
            "provisioningStatus": "Success",
            "service": "exchange"
        },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...