简体   繁体   English

PHP 谷歌 Oauth API 未设置令牌

[英]PHP Google Oauth API not setting token

I'm having trouble with the Google API, but I'm also brand new to playing around with their API, so I'm needing some help.我在使用 Google API 时遇到问题,但我对使用他们的 API 也很陌生,所以我需要一些帮助。 From what I'm gathering, the $client->getAccessToken is not being set properly.从我收集的信息来看, $client->getAccessToken 设置不正确。 Can someone please help me figure out why the error message keeps reading inside of the gradebook.php?有人可以帮我弄清楚为什么错误消息一直在成绩簿内阅读。php? Why will the token not take?为什么token不拿?

Gradebook.php:成绩簿.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: 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();

The access token needs to be set first before attempting to access a resource.在尝试访问资源之前,需要先设置访问令牌。 I have adjusted your code to set the token.我已调整您的代码以设置令牌。

<?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();}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM