首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft Graph-401,/beta/education/classes/未知错误

Microsoft Graph-401,/beta/education/classes/未知错误
EN

Stack Overflow用户
提问于 2018-03-02 15:06:39
回答 1查看 455关注 0票数 4

我试图向Microsoft教育端点提出一个请求,以获得一个一个班的作业清单

所提出的要求是:

代码语言:javascript
复制
/beta/education/classes/{class-id}/assignments

我在Azure广告中设置了阅读作业和名册的许可,并授予了它们。

我使用使用ADAL.NET的客户端凭据获得访问令牌,该令牌似乎具有正确的读取分配的应用程序权限:

代码语言:javascript
复制
{
  "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中,当我使用令牌发出请求时,它将返回带有以下主体的401 unauthorized

代码语言:javascript
复制
{
  "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正确工作并返回正确的响应。

编辑

似乎端点出于某种原因不允许应用程序权限,尽管这些权限似乎是适用的。我想这种能力会在未来出现。

我已经尝试回到使用委托权限。这一次,scp看起来如下:

代码语言:javascript
复制
"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:

代码语言:javascript
复制
{
  "error": {
    "code": "",
    "message": "Access denied.",
    "innerError": {
      "request-id": "02f6d0d4-8867-4e43-94a4-d29f3a1e03f7",
      "date": "2018-03-02T20:47:06"
    }
  }
}

根据医生的说法,这似乎是故意的。权限只允许用户访问来自其成员的类的分配。如果我把自己添加到一个类中,那么我可以查看它的作业。

然而,我想要的是能够查看任何一门课的作业,而不仅仅是我的一员。在权限引用中,有一些应用程序权限被设计成可以执行我想做的事情:

EduAssignments.Read.All:阅读有成绩的课堂作业。允许应用程序为所有用户阅读作业及其成绩。

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

EN

回答 1

Stack Overflow用户

发布于 2018-03-02 18:23:37

根据文档,您不能用app权限调用那个端点。它需要是用户身份下的委托调用。

不支持应用程序。

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

EduRoster.Read.All,EduRoster.ReadWrite.All

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49071855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档