Ресурс не найден при извлечении контактов из MS Graph API - PullRequest
0 голосов
/ 02 марта 2019

Я попробовал приведенный ниже пример github для аутентификации Azure AD и успешного получения токена доступа с соответствующим URL обратного вызова.

https://github.com/Microsoft/BotBuilder-Samples/tree/master/samples/csharp_dotnetcore/18.bot-authentication

Измененные и настроенные ключи Web.config в соответствии с созданным моим приложениемв https://apps.dev.microsoft.com

  <add key="ActiveDirectory.Mode" value="v1" />
<add key="ActiveDirectory.ResourceId" value="https://graph.microsoft.com" />
<add key="ActiveDirectory.EndpointUrl" value="https://login.microsoftonline.com" />
<add key="ActiveDirectory.Tenant" value="xyz-xyz" />
<add key="ActiveDirectory.ClientId" value="xyz-xyz" />
<add key="ActiveDirectory.ClientSecret" value="xyz-xyz" />
 <add key="ActiveDirectory.RedirectUrl" value="http://localhost:3979/api/Callback" />
<add key="ActiveDirectory.Scopes" value="Calendars.Read,Calendars.ReadWrite,Contacts.Read,Contacts.ReadWrite,Mail.Read,Mail.ReadWrite,User.Read" />

я пересек проверенный токен доступа, который получил jwt.ms .Это действительный токен с областями, точно такими же, как я определил в web.config.

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

{
"error": {
    "code": "ResourceNotFound",
    "message": "Resource could not be discovered.",
    "innerError": {
        "request-id": "6f0f3ec9-76c9-4662-ac25-0bc73f887268",
        "date": "2019-03-02T17:23:35"
    }
}

}

Код вызова Call API call.

   //Get Logged in user contacts
    public async Task<IUserContactsCollectionPage> GetMyContactsAsync()
    {
        var graphClient = GetAuthenticatedClient();
        IUserContactsCollectionPage contacts = await graphClient.Me.Contacts.Request().GetAsync();
        return contacts;
    }

FYI: Отображаемая карточка входа в эмуляторе. Авторизовать образец URL, как показано ниже

https://login.microsoftonline.com/a76b43b0-3088-4c56-ba0d-01f317b1f18c/oauth2/authorize?resource=https:%2F%2Fgraph.microsoft.com&client_id=XYZ&response_type=code&haschrome=1&redirect_uri=http:%2F%2Flocalhost:3979%2Fapi%2FCallback&x-client-SKU=PCL.Desktop&x-client-Ver=3.13.9.1126&x-client-CPU=x64&x-client-OS=Microsoft+Windows+NT+10.0.16299.0&state=<stateID>

1 Ответ

0 голосов
/ 03 марта 2019

Это может случиться по многим причинам. Одна из самых распространенных проблем - это предоставление разрешения на ваше зарегистрированное приложение.Убедитесь, что вы выполнили следующие шаги соответственно.

Шаг 1:

Войдите на свой портал и выберите свое приложение в разделе регистрации приложений.Затем нажмите на настройки, смотрите скриншот ниже:

enter image description here

Шаг 2:

После того, как вы нажали Настройки, откроется новое окно справасбоку, нажмите на меню «Необходимые разрешения»: см. снимок экрана ниже:

enter image description here

Шаг 3:

Выберите меню требуемого разрешения и назначьтеВаше разрешение, нажав на кнопку Добавить, см. снимок ниже:

enter image description here

Шаг 4:

Нажмите на Выбор API, см. ниже:

enter image description here

Заключительный шаг:

Выберите нужный API и отметьте его, к которому вы хотели бы получить доступ.После завершения разрешения нажмите Готово.После этого шага вы можете получить доступ к нужному ресурсу / области из вашего приложения.Надеюсь, это будет полезно для вас. Спасибо.см. снимок экрана ниже:

enter image description here

...