Ошибка создания подписки MSGraph: «message»: «Операция: Создать; Исключение: [Код состояния: Не авторизован; Причина:]», «code»: «ExtensionError» - PullRequest
2 голосов
/ 03 июля 2019

Мне нужно создать подписку для пользователей с помощью Microsoft Graph.

У меня есть все права в Aure Active Directory:

User.Read.All.

Метод моей подписки:

def create_subscription_to_users(self):
    t = datetime.utcnow() + timedelta(minutes=settings.MAX_TIME_DELTA_IN_MINUTES)
    payload = {
        "changeType": "updated",
        "notificationUrl": "{0}/webhooks/azure".format(settings.AZURE_WEBHOOKS_CALLBACK_BASE_URL),
        "resource": "users",
        "expirationDateTime": t.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
    }
    response = self.graph_client.post(url='{0}/subscriptions'.format(settings.GRAPH_URL), json=payload).json()
    self.add_log(url='{0}/subscriptions'.format(settings.GRAPH_URL),
                 method='POST', payload=payload, response=response)
    return response

Мой класс проверки:

class AzureHook(View):
    def post(self, request):
        url = request.get_full_path()
        parsed_url = parse_qs(urlsplit(url).query)
        validation = dict(parsed_url).get('validationToken')[0]
        return HttpResponse(validation.encode('utf-8'), content_type='text/plain')

Но я все равно получаю в ответ на создание подписки:

{"error": {"innerError": {"date": "2019-07-03T11:29:39", "request-id": "5e7f1fc3-8ef4-4511-b661-35bf7d146cc3"}, "message": "Operation: Create; Exception: [Status Code: Unauthorized; Reason: ]", "code": "ExtensionError"}}

Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 12 июля 2019

Чтобы избавиться от этой ошибки, добавьте в приложение следующие области действия.User.Read.All & offline_access, User.ReadWrite.All, Group.ReadWrite.All, Group.Read.All, Directory.ReadWrite.All, Directory.AccessAsUser.All, openid.

Чтобы получить код авторизации, воспользуйтесь этим URL в вашем браузере.https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=&response_type=code&redirect_uri= http://localhost:4200/api/auth/callback/AzureAD&response_mode=query&scope=User.Read.All & User.ReadWrite.All & Group.ReadWrite.All & Group.Read.All & Directory.ReadWrite.All & Directory.AccessAsUser.All & openid & offline_access & state = 12345 & prompt = login

Попробуйте сначала этот запрос, используя почтовую систему,Я прилагаю запрос curl для вашей справки.

curl -X POST \ https://graph.microsoft.com/v1.0/subscriptions \ -H 'Авторизация: Носитель' \ -H 'Тип содержимого: application / json' \ -d '{"changeType": "updated","messagesUrl": "https://5690e074.ngrok.io"," resource ":" groups "," expirationDateTime ":" 2019-07-13T10: 19: 03.170Z "," clientState ":" secretClientValue "} '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...