Я пытаюсь использовать turnIn()
функция в Google Classroom API для PHP.
В документации PHP написано, что требуется 4 параметра, последним из которых является TurnInStudentSubmissionRequest
, Я просмотрел всю документацию и не смог найти никаких указаний на то, что это или где это установлено.
В основной документации Google Classroom API указано, что для этого требуются идентификатор курса, идентификатор курса и идентификатор отправки, но я не могу понять, каким на самом деле должен быть последний параметр, который требуется в PHP. Для этого есть страница в документации по Google Classroom API PHP, но нет информации о том, что это такое и как оно используется.
Добро пожаловать в 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 и выглядит так, как будто используется как тело запроса post:
// 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()
);
Других решений пока нет …