如何解决如何使用 php 中的 api 从 Google Classroom 中检索作业、测验分数 答案:示例:参考:
我想使用项目的 API 从 Google Classroom 读取作业或测验分数。但我不知道如何从 Google 课堂阅读标记。
请给我一些使用 PHP 或 Laravel 从 Google Classroom 阅读作业或测验分数的建议和源代码。
我已经在 const { getUserFromMention } = require("../userinfo/getuser.js");
module.exports = {
name: "kick",description: "kick a player",execute(message,client) {
const split = message.content.split(/ +/);
const args = split.slice(1);
const member = getUserFromMention(args[0],client);
if (!member) {
return message.reply("Say the name lets dew it !");
}
if (!message.member.permissions.has("KICK_MEMBERS")) {
return message.reply("I can't kick this user.");
}
return message.guild.members
.kick(member)
.then(() => message.reply(`${member.username} was kicked.`))
.catch((error) => message.reply("They are above my paygrade"));
},};
文件中添加了一些代码:
quickstart.php
然后当我在 localhost 运行 <?php
require __DIR__ . '/vendor/autoload.php';
// if (php_sapi_name() != 'cli') {
// throw new Exception('This application must be run on the command line.');
// }
/**
* Returns an authorized API client.
* @return Google_Client the authorized client object
*/
function getClient()
{
$client = new Google_Client();
$client->setApplicationName('Google Classroom API & PHP');
$client->setScopes(array(
Google_Service_Classroom::CLASSROOM_COURSES,Google_Service_Classroom::CLASSROOM_STUDENT_SUBMISSIONS_STUDENTS_READONLY,Google_Service_Classroom::CLASSROOM_ROSTERS)
);
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account consent');
// Load previously authorized token from a file,if it exists.
// The file token.json stores the user's access and refresh tokens,and is
// created automatically when the authorization flow completes for the first
// time.
$tokenPath = 'token.json';
if (file_exists($tokenPath)) {
$accessToken = json_decode(file_get_contents($tokenPath),true);
$client->setAccessToken($accessToken);
}
// If there is no previous token or it's expired.
if ($client->isAccessTokenExpired()) {
// Refresh the token if possible,else fetch a new one.
if ($client->getRefreshToken()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
} else {
// Request authorization from the user.
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:\n%s\n",$authUrl);
print 'Enter verification code: ';
$authCode = trim(fgets(STDIN));
// Exchange authorization code for an access token.
$accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
$client->setAccessToken($accessToken);
// Check to see if there was an error.
if (array_key_exists('error',$accessToken)) {
throw new Exception(join(',',$accessToken));
}
}
// Save the token to a file.
if (!file_exists(dirname($tokenPath))) {
mkdir(dirname($tokenPath),0700,true);
}
file_put_contents($tokenPath,json_encode($client->getAccessToken()));
}
return $client;
}
// Copyright 2021 Google LLC.
// SPDX-License-Identifier: Apache-2.0
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Classroom($client);
// set these parameters:
// 328776504166 <- It is my course id
// 339429593407 <- It is my course work id
$courseId = "328776504166";
$courseWorkId = "339429593407";
$results = $service->courses_courseWork_studentSubmissions->listCoursesCourseWorkStudentSubmissions($courseId,$courseWorkId);
foreach ($results->studentSubmissions as $r => $submission) {
$student = $service->courses_students->get($courseId,$submission->userId);
$studentName = $student->profile->name->fullName;
print($studentName . ": ");
print($submission->assignedGrade. "\n");
}
时,可以看到以下问题:
quickstart.php
}
我找不到我的错。如何解决这个问题呢?请给我一些建议
解决方法
答案:
您可以使用 courses.courseWork.studentSubmissions.list
方法检索学生提交的课程作业列表。在响应中,会有 assignedGrade
字段。
示例:
// Copyright 2021 Google LLC.
// SPDX-License-Identifier: Apache-2.0
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Classroom($client);
// set these parameters:
$courseId = "180119025944";
$courseWorkId = "177950380066";
$results = $service->courses_courseWork_studentSubmissions->listCoursesCourseWorkStudentSubmissions($courseId,$courseWorkId);
foreach ($results->studentSubmissions as $r => $submission) {
$student = $service->courses_students->get($courseId,$submission->userId);
$studentName = $student->profile->name->fullName;
print($studentName . ": ");
print($submission->assignedGrade. "\n");
}
另外,请确保您设置了正确的范围:
$client->setScopes(array(
Google_Service_Classroom::CLASSROOM_COURSES,Google_Service_Classroom::CLASSROOM_STUDENT_SUBMISSIONS_STUDENTS_READONLY,Google_Service_Classroom::CLASSROOM_ROSTERS)
);
希望对你有帮助!
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。