我正在使用带有ReactJS的SPFX Webpart,它对MS Graph API REST进行了一些服务调用,以便显示用户数据:用户的显示名称,用户的邮件,用户的日历事件和用户的Teams。但是,只有用户信息服务调用(在Graph中为“ / me”)才能检索数据...其他调用显示错误:尽管我使用Graph Explorer进行了相同的服务调用,但仍显示“ ResourceNotFound-无法发现资源”。
在检索电子邮件(“ / me / messages”)的情况下,我正在与具有Office365 Exchange邮件帐户但他在SP Tenant中没有管理员角色的用户进行测试。我的Web部件具有“ Mail.Read”和“ Mail.ReadWrite”权限(还有其他一些示例,例如“ User.Read.All”,以便读取用户的团队)。我已经在SP Workbench中进行了测试,并将我的Webpart部署在SP租户的页面中,批准了webApiPermissionManagement中所有未决的权限,但是仍然不起作用:(
此外,在Azure Portal中,我的Webpart显示它具有委派的“读取用户邮件”权限。我不知道我是否会在这里错过一些配置,但是我认为我批准了我可以与另一个具有管理员角色的用户的所有权限...
因此,我有两个不同组织的用户:一个拥有在SP站点中具有权限但没有管理员角色的邮件Exchange O365,另一个是SP Tenant的所有者但没有交换邮件(我不使用该用户)。
在我的代码中,用于检索邮件列表的服务呼叫是:
this.props.context.msGraphClientFactory.getClient().then(
function(client: MSGraphClient) {
client
.api("me/messages")
.version("v1.0")
.select("receivedDateTime,from,subject")
.filter("isDraft eq false")
.orderby("receivedDateTime DESC")
.get((error, response) => {
if(error) {
console.error(error.message);
return;
}
MailHelper.GetMailsFromResponse(response); //Custom helper in order to format successful response
});
}
);
(我在这里看到了如何调用Graph客户端:https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-msgraph#use-the-msgraphclient-in-your-solution)
正如我之前所说,当我调用“ / me / messages”服务调用时,我收到404错误:“ ResourceNotFound-无法发现资源”,而不是电子邮件列表...但是如果使用Graph资源管理器,它工作正常。我认为我可能已经跳过了一些权限配置,但是我不知道是哪个。我已经尝试过各种有关连接图和SPFX的Microsoft教程,但是没有一个适合我。任何想法?我有点绝望。