Siehe Änderungen unten.Office 365-Kalender-API mit EWS und OAuth 2
Ich versuche mit der Office 365-API zu arbeiten, die EWS (nicht die verwaltete API) zum Erstellen/Löschen/Aktualisieren von Ereignissen in den Kalendern der Benutzer verwendet.
Bis jetzt habe ich erfolgreich Basic Auth verwendet, um zu validieren, dass meine SOAP-Anfrage funktioniert. Ich versuche jetzt, Basic Auth durch OAuth 2 zu ersetzen. Ich benötige die Verwendung des Client Credentials Flow.
Hier sind die Schritte, die ich gefolgt:
bereitgestellt Admin Zustimmung zur Anwendung. Ich habe die folgende URL in meinem Browser gestartet und die Einwilligung mithilfe eines Administratorkontos erteilt.
https://login.microsoftonline.com/common/oauth2/authorize? response_type=code+id_token& scope=openid& client_id=[Client ID]& redirect_uri=http://localhost/myapp/permissions& resource=https://outlook.office.com& prompt=admin_consent& response_mode=form_post& nonce=1234
Nach Erteilung der Genehmigung abgerufen ich die
id_token
aus der Antwort, und decodiert es JWT.io verwenden. Aus der Nutzlast habe ich dietid
aufgenommen.Next ich ein Zugriffstoken durch Senden die folgende Anforderung abgerufen:
POST https://login.microsoftonline.com/[TID]/oauth2/token HTTP/1.1 cache-control: no-cache Content-Type: application/x-www-form-urlencoded Accept: */* Host: login.microsoftonline.com accept-encoding: gzip, deflate Connection: close client_id=[CLIENT ID]& client_secret=[CLIENT SECRET]& grant_type=client_credentials& resource=https%3A%2F%2Foutlook.office.com
das Zugriffstoken verwenden, schickte ich den gleichen Wunsch, wie ich Grund Auth tat, mit der Ausnahme ich den Grund Auth-Header ersetzt mit
Authorization: Bearer [Access Token]
erhielt ich folgende Fehler (403 Forbidden
): The token contains not enough scope to make this call.
Was muss ich tun, um diesen Fehler zu beheben?
Edit 1: Ich habe die Use Exchange Web Services with full access to all mailboxes
Anwendung Erlaubnis und das Senden der SOAP-Nachricht führt nun zu einer 500 Internal Server Error
...