PHP Google Classroom API turnin () TurnInStudentSubmissionRequest - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь использовать функцию turnIn() в Google Classroom API для PHP.

В документации PHP написано, что требуется 4 параметра, последний из которых - TurnInStudentSubmissionRequest.Я просмотрел всю документацию и не смог найти никаких признаков того, что это такое и где оно установлено.

В основной документации Google Classroom API указано, что для этого требуются идентификатор курса, идентификатор курса и идентификатор отправки, но я не могу понять, какой последний параметр требуется в PHP на самом деледолжно быть.Для него есть страница в документации по Google Classroom API PHP, но нет информации о том, что это такое и как оно используется.

1 Ответ

0 голосов
/ 27 сентября 2018

Добро пожаловать в StackOverflow!

Похоже, вы используете PHP-клиент Google .Если вы осмотрите тело метода:

/**
 * Turns in a student submission.
 *
 * Turning in a student submission transfers ownership of attached Drive files
 * to the teacher and may also update the submission state.
 *
 * This may only be called by the student that owns the specified student
 * submission.
 *
 * This request must be made by the Developer Console project of the [OAuth
 * client ID](https://support.google.com/cloud/answer/6158849) used to create
 * the corresponding course work item.
 *
 * This method returns the following error codes:
 *
 * * `PERMISSION_DENIED` if the requesting user is not permitted to access the
 * requested course or course work, turn in the requested student submission, or
 * for access errors. * `INVALID_ARGUMENT` if the request is malformed. *
 * `NOT_FOUND` if the requested course, course work, or student submission does
 * not exist. (studentSubmissions.turnIn)
 *
 * @param string $courseId Identifier of the course. This identifier can be
 * either the Classroom-assigned identifier or an alias.
 * @param string $courseWorkId Identifier of the course work.
 * @param string $id Identifier of the student submission.
 * @param Google_Service_Classroom_TurnInStudentSubmissionRequest $postBody
 * @param array $optParams Optional parameters.
 * @return Google_Service_Classroom_ClassroomEmpty
 */
public function turnIn($courseId, $courseWorkId, $id, Google_Service_Classroom_TurnInStudentSubmissionRequest $postBody, $optParams = array())
{
  $params = array('courseId' => $courseId, 'courseWorkId' => $courseWorkId, 'id' => $id, 'postBody' => $postBody);
  $params = array_merge($params, $optParams);
  return $this->call('turnIn', array($params), "Google_Service_Classroom_ClassroomEmpty");
}

Вы увидите, что Google_Service_Classroom_TurnInStudentSubmissionRequest расширяется Google_Model.

Он передается в вызов API и выглядит так, как будто он используется в качестве тела почтового запроса:

// postBody is a special case since it's not defined in the discovery
// document as parameter, but we abuse the param entry for storing it.
$postBody = null;
if (isset($parameters['postBody'])) {
  if ($parameters['postBody'] instanceof Google_Model) {
    // In the cases the post body is an existing object, we want
    // to use the smart method to create a simple object for
    // for JSONification.
    $parameters['postBody'] = $parameters['postBody']->toSimpleObject();
  } else if (is_object($parameters['postBody'])) {
    // If the post body is another kind of object, we will try and
    // wrangle it into a sensible format.
    $parameters['postBody'] =
        $this->convertToArrayAndStripNulls($parameters['postBody']);
  }
  $postBody = (array) $parameters['postBody'];
  unset($parameters['postBody']);
}

// ...

$request = new Request(
    $method['httpMethod'],
    $url,
    ['content-type' => 'application/json'],
    $postBody ? json_encode($postBody) : ''
);

Согласно документации запрос POSTтело должно быть пустым, а PHP требует, чтобы 4-й параметр был экземпляром Google_Service_Classroom_TurnInStudentSubmissionRequest.

Измените ваши вызовы следующим образом:

$resource->turnIn(
    $courseId, 
    $courseWorkId, 
    $id, 
    new Google_Service_Classroom_TurnInStudentSubmissionRequest()
);
...