如何解决类中分配端点上的错误请求?

问题描述 投票:1回答:1

[当我调用图形/assigments端点时,收到带有以下消息的错误请求:

找不到段'assignments'的资源。

此相同的代码模式可用于其他端点,例如/teachers/members,但不适用于/assignments

代码:

$getEventsUrlAssignments = '/education/classes/' . $class->getId() . '/assignments';
try {
    $assignments = $graph->createRequest('GET', $getEventsUrlAssignments)
        ->setReturnType(Model\EducationAssignment::class)
        ->execute();
} 
catch (\GuzzleHttp\Exception\ClientException $e) {
    dd($e->getResponse()->getBody()->getContents());
}

我已按照文档中所述添加了正确的权限:

  • EduAssignments.ReadBasic
  • EduAssignments.ReadWriteBasic
  • EduAssignments.Read
  • EduAssignments.ReadWrite

我可能做错了什么?

php microsoft-graph microsoft-graph-edu
1个回答
0
投票

您收到此错误的原因是/assignments仅在Graph的Beta版中可用。如果尝试使用v1.0调用此端点,则Graph会拒绝请求,并出现以下错误:

{
    "error": {
        "code": "BadRequest",
        "message": "Resource not found for the segment 'assignments'.",
        "innerError": {
            "request-id": "38df490c-3a2b-4fe8-a77e-a7cce82831b5",
            "date": "2020-02-20T18:46:16"
        }
    }
}

为了使用/assignments端点,您需要调用Beta版本:

/beta/education/assignments/

您可以通过setApiVersion告诉SDK使用Beta版:

setApiVersion

您还需要引用Beta模型,因为v1.0中没有用于Assignment的模型。此过程在SDK的Wiki的$graph = new Graph(); $graph ->setBaseUrl("https://graph.microsoft.com/") ->setApiVersion("beta") ->setAccessToken($_SESSION['access_token']); $getEventsUrlAssignments = '/education/classes/' . $class->getId() . '/assignments'; try { $assignments = $graph->createRequest('GET', $getEventsUrlAssignments) ->setReturnType(Model\EducationAssignment::class) ->execute(); } catch (\GuzzleHttp\Exception\ClientException $e) { dd($e->getResponse()->getBody()->getContents()); } 下进行了说明。

© www.soinside.com 2019 - 2024. All rights reserved.