我正在尝试使用PHP的Google课堂API中的turnIn()
函数。
在PHP文档中,它说它需要4个参数,最后一个是TurnInStudentSubmissionRequest
。我浏览了整个文档,找不到任何指示或说明。
在主要的Google Classroom API文档中,它指出它需要课程ID,课程作业ID和提交ID,但我似乎无法弄清楚PHP中所需的最后一个参数实际上是什么。 Google Classroom API PHP文档中有一个页面,但没有有关其用途或使用方式的信息。
答案 0 :(得分:0)
欢迎使用StackOverflow!
您似乎正在使用Google's PHP client。如果您检查方法的正文:
/**
* 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) : ''
);
According to the documentation POST请求正文必须为空,PHP需要第4个参数作为Google_Service_Classroom_TurnInStudentSubmissionRequest
的实例。
像这样修改您的通话:
$resource->turnIn(
$courseId,
$courseWorkId,
$id,
new Google_Service_Classroom_TurnInStudentSubmissionRequest()
);