gpt4 book ai didi

microsoft-graph-api - Microsoft Graph - 401,/beta/education/classes/的未知错误

转载 作者:行者123 更新时间:2023-12-04 07:15:28 28 4
gpt4 key购买 nike

我正在尝试向 Microsoft Graph beta 教育端点发出请求以获取 list of assignments for a class .

提出的请求是:

/beta/education/classes/{class-id}/assignments

我在 Azure AD 中设置了读取作业和名册的权限,并授予了它们。

我使用 ADAL.NET 使用客户端凭据获取访问 token ,并且该 token 似乎具有读取分配的正确应用程序权限:
{
"aud": "https://graph.microsoft.com/",
"iss": "https://sts.windows.net/5cf890b2-6a94-452f-8c29-9f7365b68ba0/",
"iat": 1520000639,
"nbf": 1520000639,
"exp": 1520004539,
"aio": "...",
"app_displayname": "...",
"appid": "...",
"appidacr": "1",
"e_exp": 262800,
"idp": "https://sts.windows.net/5cf890b2-6a94-452f-8c29-9f7365b68ba0/",
"oid": "bd0154f3-2626-40c1-82a5-39bc8879729c",
"roles": [
"EduRoster.Read.All",
"EduAdministration.Read.All",
"EduRoster.ReadBasic.All",
"EduAssignments.Read.All"
],
"sub": "...",
"tid": "...",
"uti": "...",
"ver": "1.0"
}

但是,在 Fiddler 中,当我使用 token 发出请求时,它返回 401 unauthorized具有以下主体:
{
"error": {
"code": "UnknownError",
"message": "",
"innerError": {
"request-id": "bf6cd2e1-53a6-472a-b038-2b035eb8f7db",
"date": "2018-03-02T14:41:41"
}
}
}

它似乎只是我无法访问的那个端点,如 /v1.0/education/users/{user-id}/classes正常工作并返回正确的响应。

编辑

尽管权限似乎适用,但端点似乎出于某种原因不允许应用程序权限。我认为 future 会出现这种能力。

我已尝试重新使用委派权限。这一次,scp 的样子如下:
"scp": "AllSites.Read Calendars.Read Contacts.Read Directory.Read.All EduAdministration.Read EduAssignments.ReadWrite EduRoster.Read EduRoster.ReadBasic email Files.Read full_access_as_user Group.Read.All Mail.Read MyFiles.Read Notes.Read Notes.Read.All Notes.ReadWrite.CreatedByApp profile Sites.Read.All Sites.Search.All Tasks.Read TermStore.Read.All User.Read User.Read.All User.ReadBasic.All"

授予 EduAssignments 权限。该请求现在返回 403:
{
"error": {
"code": "",
"message": "Access denied.",
"innerError": {
"request-id": "02f6d0d4-8867-4e43-94a4-d29f3a1e03f7",
"date": "2018-03-02T20:47:06"
}
}
}

根据文档,这似乎是设计使然。这些权限仅允许用户访问他们所属的类(class)的作业。如果我将自己添加到类(class)中,那么我可以查看其作业。

但是,我想要的是能够查看任何类(class)的作业,而不仅仅是我所属的类(class)。来自 permissions reference ,有一些应用程序权限旨在做我想做的事:

EduAssignments.Read.All: Read class assignments with grades. Allows the app to read assignments and their grades for all users.



但是,该端点根本不支持它们。

最佳答案

根据文档,您无法使用应用权限调用该端点。它需要是用户身份下的委托(delegate)调用。

Application Not supported.



可以调用 /v1.0/education/users/{user-id}/classes的原因是因为它允许使用角色进行仅限应用程序的调用:

EduRoster.Read.All, EduRoster.ReadWrite.All



你有其中之一,所以成功了。

关于microsoft-graph-api - Microsoft Graph - 401,/beta/education/classes/的未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071855/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com