Outlook notification subscription using Azure Webh

2019-07-22 20:28发布

问题:

I am working on Creating a push notification for inbox messages to be sent to my azure webhook.

I have been following the documentation as a reference. Till now I have been able to create and register my app using the Azure app registration. I got the client_id and client_secret accordingly.

Shared below are the postman requests I made to first get the access code and then access_token and refresh_token from the Oauth authorization endpoints -

Getting the access code -

Endpoint - https://login.microsoftonline.com/{tenant}/oauth2/authorize

Authorization Type – Oauth 2.0

Headers – 
    Content Type:   application/x-www-form-urlencoded

Body – 
    response_type:  code
    client_id:      myClientId
    redirect_uri:   https://app.getpostman.com/oauth2/callback
    response_mode:  query
    scope:          https://outlook.office.com/mail.read

Getting the access_token -

Endpoint – 
https://login.microsoftonline.com/{tenant}/oauth2/token

Authorization Type – Oauth 2.0

Headers – 
    Content Type:   application/x-www-form-urlencoded

Body – 
    code:           **********access_code***************
    client_id:      myClientId
    scope:          https://outlook.office.com/mail.read
    grant_type:     authorization_code
    client_secret:  *********client_secret*********
    redirect_uri:   https://app.getpostman.com/oauth2/callback  
    resource:       myClientId

Now, as mentioned in the documentation, I am posting the following request for creating the subscription (using Fiddler) -

Endpoint – 
https://outlook.office.com/api/v2.0/me/subscriptions

Headers – 
    Authorization:      Bearer access_token_got_in_the_response_above
    Content Type:       application/json

Body – 
    @odata.type:        #Microsoft.OutlookServices.PushSubscription
    Resource:           https://outlook.office.com/api/v2.0/me/mailfolders('inbox')/messages
    NotificationURL:    https://myAzureFunctionApp.azurewebsites.net/api/HttpNotificationHandler
    ChangeType:         authorization_code

The problem is that the response I am getting is a 404 Not Found. More specifically, X-CasErrorCode: DomainNotFound. I have double checked to make sure there are no typos in any specification.

To give some more Info, I had previously tried this and was successful in creating the subscription for my personal hotmail account. The user I am stuck with has been added to the Azure Active Directory as a guest user under the same tenant my app has been registered.

UPDATE

Here are some more questions that might be useful -

  • The email address is say email1@contoso.com, and the tenant is ABCcontoso.onmicrosoft.com. Will it make any difference?

  • The user is not added to the user group using this application in the Azure Active Directory app registration section, the only user shown is the admin who had registered the app. Is this required?

  • The app was registered on the Microsoft App Registration Portal. But it is reflected in the Azure Active Directory under the tenant. So, is hitting the OAuth2 v1.0 endpoint correct?

  • What should be the endpoint for creating a notification subscription for a work/organization account having office 365 subscription? The current endpoint https://outlook.office.com/api/v2.0/me/subscriptions uses v2.0, but the token provided is by v1.0 endpoint (if I understand it correctly).

Any help is appreciated.