Как разрешить Плохой Запрос о назначении конечной точки в классах? - PullRequest
1 голос
/ 20 февраля 2020

Когда я вызываю конечную точку графика /assigments, я получаю неверный запрос со следующим сообщением:

Ресурс не найден для сегмента «назначения».

Этот же шаблон кода работает с другими конечными точками, такими как /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

Что я мог делать не так?

1 Ответ

1 голос
/ 20 февраля 2020

Вы получаете эту ошибку, потому что /assignments доступно только в бета-версии Graph. Если вы попытаетесь вызвать эту конечную точку, используя 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/education/assignments/

Вы можете указать SDK использовать бета-версию, используя setApiVersion:

$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());
}

Вам также нужно будет ссылаться на бета-модели поскольку в v1.0 нет модели для Assignment. Этот процесс описан в вики SDK под Использование бета-моделей .

...