我在使用Google API时遇到了麻烦,但我对他们的API也是一个全新的尝试,所以我需要一些帮助。从我收集的信息来看,$client->getAccessToken没有正确设置。有没有人能帮我弄清楚为什么错误消息会一直在gradebook.php中显示?为什么令牌不会被接受?
Gradebook.php:
<?php
session_start();
require_once 'oauth.php';
if ($client->getAccessToken()) {
//Now have offline access of the user
$_SESSION['token'] = $client->getAccessToken();
//User token google drive call:
$service = new Google_Service_Classroom($client);
$courses = $service->courses->listCourses(['teacherId' => 'me']);
foreach ($courses as $key => $course) {
// var_dump($course->id);
$courseWorks = $service->courses_courseWork->listCoursesCourseWork($course['id']);
foreach ($courseWorks as $k => $courseWork) {
// print_r($courseWork);
// var_dump($courseWork->id);
$studentSubmissions = $service->courses_courseWork_studentSubmissions->listCoursesCourseWorkStudentSubmissions($course->id, $courseWork->id);
// print_r($studentSubmissions);
foreach ($studentSubmissions as $i => $studentSubmission) {
$student = $service->courses_students->get($course->id, $studentSubmission->userId);
$emailAddress = $student->getProfile()->emailAddress;
$emailId = explode('@', $emailAddress)[0];
var_dump($emailId);
var_dump($course->id);
var_dump($courseWork->id);
var_dump($studentSubmission->assignedGrade);
}
}
}
}
else {echo "ERROR DETECTED!!";}Oauth.php:
session_start();
require_once '../vendor/autoload.php';
// initation configuration, as specificed by Google
$clientID = '(redacted)';
$clientSecret = '(redacted)';
$redirectUri = '(redacted)';
// create Client Request to access Google API
$client = new Google_Client();
$client->setClientId($clientID);
$client->setClientSecret($clientSecret);
$client->setRedirectUri($redirectUri);
$client->setScopes(array(
"email",
"profile",
"https://www.googleapis.com/auth/classroom.courses.readonly",
"https://www.googleapis.com/auth/classroom.coursework.students.readonly",
"https://www.googleapis.com/auth/classroom.rosters.readonly",
"https://www.googleapis.com/auth/classroom.coursework.students.readonly",
"https://www.googleapis.com/auth/classroom.profile.emails",
"https://www.googleapis.com/auth/classroom.profile.photos"
));
// establish session define_syslog_variables
$client->fetchAccessTokenWithAuthCode($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();发布于 2021-02-20 16:23:00
在尝试访问资源之前,需要先设置访问令牌。我已经调整了你的代码来设置令牌。
<?php
session_start();
require_once '../Internal/oauth.google.php';
$client->setAccessToken($_SESSION["token"]); //set the access token is what you missed
/*$client->getAccessToken() should return a none NULL value if set properly, something we have added above*/
if ($client->getAccessToken() !==NULL) {
//Now have offline access of the user
$_SESSION['token'] = $client->getAccessToken();
//User token google drive call:
$service = new Google_Service_Classroom($client);
$courses = $service->courses->listCourses(['teacherId' => 'me']);
foreach ($courses as $key => $course) {
print_r($course);
$courseWorks = $service->courses_courseWork->listCoursesCourseWork($course['id']);
foreach ($courseWorks as $k => $courseWork) {
// print_r($courseWork);
// var_dump($courseWork->id);
$studentSubmissions = $service->courses_courseWork_studentSubmissions->listCoursesCourseWorkStudentSubmissions($course->id, $courseWork->id);
// print_r($studentSubmissions);
foreach ($studentSubmissions as $i => $studentSubmission) {
$student = $service->courses_students->get($course->id, $studentSubmission->userId);
$emailAddress = $student->getProfile()->emailAddress;
$emailId = explode('@', $emailAddress)[0];
var_dump($emailId);
var_dump($course->id);
var_dump($courseWork->id);
var_dump($studentSubmission->assignedGrade);
}
}
}
}
else {header('Location: ../index.php'); exit();}https://stackoverflow.com/questions/66269044
复制相似问题