I have setup an Office 365 E3 trial account. I registered two apps in AAD.
The first one uses the "authorization code flow" and does work as expected (can access the logged in users calendar).
The second app uses the "client credentials flow" and does not work.
login in Browser (Edge)
GET /OAuthTest3 HTTP/1.1 HTTP/1.1 302 Found Location: https://login.microsoftonline.com/<tenant>/adminconsent?client_id=<app_id>&redirect_uri=http://localhost:1234/OAuthTest3 GET /OAuthTest3?admin_consent=True&tenant=<tenant> HTTP/1.1 HTTP/1.1 200 OK
connect to https://login.microsoftonline.com/
POST /<tenant>/oauth2/token HTTP/1.1 Host: login.microsoftonline.com client_id=<app_id>& client_secret=<client_secret>& grant_type=client_credentials& redirect_uri=http://localhost:1234/OAuthTest3& resource=https://graph.microsoft.com/& scope=https://graph.microsoft.com/calendars.readwrite HTTP/1.1 200 OK { "token_type": "Bearer", "expires_in": "3600", "ext_expires_in": "0", "expires_on": "1504333342", "not_before": "1504329442", "resource": "https://graph.microsoft.com/", "access_token": <token> }
connect to https://graph.microsoft.com/
GET /v1.0/users/<user>/calendars HTTP/1.1 Host: graph.microsoft.com Authorization: Bearer <token> HTTP/1.1 403 Forbidden { "error": { "code": "ErrorAccessDenied", "message": "Access is denied. Check credentials and try again.", "innerError": { "request-id": "e7228de4-2b27-4779-abef-ccab0d88970a", "date": "2017-09-02T05:22:27" } } }