我目前正在尝试将SharePoint网站与Microsoft Graph集成,以便在主页上向用户显示信息,包括来自Graph API的Outlook邮件,日历和任务信息。这是通过使用ADAL JS库(核心JS版本,而不是Angular JS版本)实现的。
当尝试检索用户的日历、任务、用户和组信息时,请求成功完成。但是,当尝试检索用户的邮件消息(使用/me/messages)端点时,请求返回403错误,并包含以下消息:
"{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
"request-id": "GUID",
"date": "2016-10-26T07:14:50"
}
}
}"
这让我检查返回的JSON Web令牌,我注意到,尽管Azure AD应用程序具有正确的授权权限来读取用户的邮件,但请求的范围似乎是不正确的:
"scp": "Calendars.Read Contacts.Read Directory.Read.All email profile Tasks.Read User.Read",
可以看到,没有Mail。阅读,它有"电子邮件"(和个人资料)。
我似乎找不到任何地方来指定,更改或更新web令牌中包含的范围。对应用程序所需权限的任何更改似乎对范围字符串没有任何影响。
任何帮助都将是非常感激的。
很多谢谢,杰森
email作用域只授予您访问用户的主要电子邮件地址的权限。要访问他们的收件箱,你需要Mail.Read。要获得此范围,您需要更新Azure门户上的应用程序注册并请求"阅读用户邮件"。