我正在制作收件箱邮件的推送通知,以便发送到我的azure webhook。
我一直关注documentation作为参考。到目前为止,我已经能够使用Azure应用程序注册创建和注册我的应用程序。我相应地得到了client_id和client_secret。
以下共享是我首先获取访问代码的邮递员请求,然后是来自Oauth授权端点的access_token和refresh_token -
获取访问代码 -
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
获取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
现在,正如文档中所提到的,我发布了以下创建订阅的请求(使用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
问题是我得到的回复是404 Not Found
。更具体地说,X-CasErrorCode: DomainNotFound
。我已仔细检查以确保任何规格中都没有拼写错误。
为了提供更多信息,我之前尝试了这一点,并成功创建了我的个人hotmail帐户的订阅。我坚持使用的用户已作为访客用户添加到Azure Active Directory中,该用户已在我的应用已注册的同一租户下。
更新
以下是一些可能有用的问题 -
电子邮件地址为email1@contoso.com,租户为ABCcontoso.onmicrosoft.com。会有什么不同吗?
在Azure Active Directory应用程序注册部分中,未使用此应用程序将用户添加到用户组,显示的唯一用户是已注册该应用程序的管理员。这需要吗?
该应用已在Microsoft App Registration Portal上注册。但它反映在租户下的Azure Active Directory中。那么,击中OAuth2 v1.0端点是否正确?
为具有Office 365订阅的工作/组织帐户创建通知订阅的端点应该是什么?当前端点https://outlook.office.com/api/v2.0/me/subscriptions
使用v2.0,但提供的令牌是v1.0端点(如果我理解正确的话)。
感谢任何帮助。