首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌课堂-创建课程错误PHP

谷歌课堂-创建课程错误PHP
EN

Stack Overflow用户
提问于 2021-01-07 02:39:59
回答 1查看 74关注 0票数 2

我正在尝试使用PHP创建课程,但在调用过程中遇到错误。

代码语言:javascript
复制
<?php
require_once __DIR__.'/vendor/autoload.php';
putenv('GOOGLE_APPLICATION_CREDENTIALS=C:\laragon\www\classroom.json');

$user_admin= 'test00001@gmail.com';

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setSubject($user_admin);

$client->setScopes(array(

    'https://www.googleapis.com/auth/classroom.courses',
    'https://www.googleapis.com/auth/classroom.courses.readonly',
    'https://www.googleapis.com/auth/classroom.rosters',
    'https://www.googleapis.com/auth/classroom.rosters.readonly',
    'https://www.googleapis.com/auth/classroom.profile.emails',
    'https://www.googleapis.com/auth/classroom.profile.photos'

));
$service = new Google_Service_Classroom($client);

$postBody = array(
    "id" => "1",
    "name" => "Course 01",
    "section" => "15/19",
    "descriptionHeading" => "Course 01 test 001",
    "description" => "Course 01 test",
    "room" => "03/12",
    "creationTime" => "2020-12-12T11:48:50.951Z",
    "enrollmentCode" => "yzdeeee",
    "courseState" => "ACTIVE",
    "alternateLink" => "https://classroom.google.com/c/coursetest01"
);

$optParams = array();
$results = $service->courses->create($postBody, $optParams);

echo '<pre>', print_r($results, true);
exit;

我的回报是:

代码语言:javascript
复制
Fatal error: Uncaught TypeError: Argument 1 passed to Google_Service_Classroom_Resource_Courses::create() must be an instance of Google_Service_Classroom_Course, array given, called in C:\laragon\www\teste-03.php on line 41 and defined in C:\laragon\www\vendor\google\apiclient-services\src\Google\Service\Classroom\Resource\Courses.php:47 Stack trace: #0 C:\laragon\www\teste-03.php(41): Google_Service_Classroom_Resource_Courses->create(Array, Array) #1 {main} thrown in C:\laragon\www\vendor\google\apiclient-services\src\Google\Service\Classroom\Resource\Courses.php on line 47

我正在查看文档,但我不知道在哪里可以解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-07 03:52:50

错误消息不言而喻。它显示为Argument 1 passed to Google_Service_Classroom_Resource_Courses::create() must be an instance of Google_Service_Classroom_Course, array given,这是因为$postBody是一个数组。

如function create文档中所示

代码语言:javascript
复制
create( Google_Service_Classroom_Course $postBody, array $optParams = array() )

此函数要求第一个参数是Google_Service_Classroom_Course对象,而不是数组。因此,您需要首先创建此类型的对象,然后将此对象作为参数传递。所以最终结果应该是这样的:

代码语言:javascript
复制
$course = new Google_Service_Classroom_Course(array(
    "id" => "1",
    "name" => "Course 01",
    "section" => "15/19",
    "descriptionHeading" => "Course 01 test 001",
    "description" => "Course 01 test",
    "room" => "03/12",
    "creationTime" => "2020-12-12T11:48:50.951Z",
    "enrollmentCode" => "yzdeeee",
    "courseState" => "ACTIVE",
    "alternateLink" => "https://classroom.google.com/c/coursetest01"
));


$course = $service->courses->create($course);

注意:由于第二个参数的默认值是空数组(array $optParams = array()),因此没有必要显式地包含它。上述代码的最后一行与下面的完全相同:

代码语言:javascript
复制
$optParams = array();
$course = $service->courses->create($course, $optParams);

还要记住,因为$course是一个对象,所以不建议像对数组那样打印它。您可以打印对象的特定信息,如下所示:

代码语言:javascript
复制
printf("Course created: %s (%s)\n", $course->name, $course->id);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65601530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档