Я работал с «Интеграцией платформы Microsoft Identity Platform с веб-приложением Python» (https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-python-webapp). Я пытаюсь получить доступ к графическому API от Microsoft с помощью веб-приложения python.
Вкратце, моя проблема: после успешного принятия учетных данных учетной записи Microsoft, он показывает мне эту проблему на веб-странице: Мы не можем выполнить ваш запрос: invalid_request: предоставленное значение для входной параметр «redirect_uri» недействителен. Ожидаемое значение - это URI, который соответствует URI перенаправления, зарегистрированному для этого клиентского приложения.
Я пробовал найти множество решений, но ни одно из них не помогло. Я тоже пробовал это решение - https://github.com/microsoftgraph/msgraph-training-uwp/issues/15
Но это не решает проблему для python. Проблема осталась прежней.
Я сделал все по инструкции -
Скачать проект python из microsoft graph api docs (https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-python-webapp)
Зарегистрировано в приложении Azure Регистрация.
Аутентификация - URI перенаправления - http://localhost: 5000 / getAToken (URL-адрес, предложенный документами) -> Я добавил тот же URL-адрес в azure, я также попытался поставить оба «https» и «http».
Получен секретный ключ. (под сертификатами и секретом)
Добавлены необходимые разрешения.
Я изменил файл app.config, взяв все данные из моего azure регистрация приложения (я добавляю код ниже) 7. Я ничего не менял в своем файле app.py.
Запущен сервер Flask и наконец открыт требуемый адрес localhost.
Пожалуйста, помогите мне, где я ошибся и какие исправления мне нужно делать. Я буду очень признателен. Заранее благодарим.
App.config
import os
CLIENT_SECRET = "my key"
AUTHORITY = "https://login.microsoftonline.com/common" # For multi-tenant app
CLIENT_ID = "my id here"
REDIRECT_PATH = "/getAToken"
ENDPOINT = 'https://graph.microsoft.com/v1.0/users'
SCOPE = ["User.ReadBasic.All"]
SESSION_TYPE = "filesystem" # So token cache will be stored in server-side session