Использование Google Http Batch с Google Classroom Api

Я пишу приложение (используя PHP), которое добавит студентов в Google Classroom. Я слежу за документацией по адресу:

https://developers.google.com/classroom/guides/batch

Я использую пакетный запрос для добавления нескольких студентов в Google Classroom. Однако пакетный запрос кажется неудачным. Мой код выглядит следующим образом:

$service = new Google_Service_Classroom($client);

$service->getClient()->setUseBatch(true);

$batch = $service->createBatch();

$courseId = "123456";
$studentEmails = ["[email protected]","[email protected]"];

foreach($studentEmails as $email) {
  $student = new Google_Service_Classroom_Student(['userId' => $email]);
  $request = $service->courses_students->create($courseId, $student);
  $requestId = $email;
  $batch->add($request, $requestId);
}

$results = $batch->execute();


foreach($results as $responseId => $student) {
  $studentEmail = substr($responseId, strlen('response-') );
  if ($student instanceof Google_Service_Exception) {
    $e = $student;
    printf("Error adding user '%s' to the course: %s\n", $studentEmail,
      $e->getMessage());
  } else {
    printf("User '%s' was added as a student to the course.\n",
        $student->profile->name->fullName, $courseId);
  }
}

$service->getClient()->setUseBatch(false);

Вывод этого кода:

Error adding user '[email protected]' to the course: Not Found ...

Однако и пользователь, и курс существуют в домене. Если я удалю пакетный код и сделаю запрос по одному, студенты будут успешно добавлены в класс, что заставит меня поверить, что я что-то упускаю в пакетном запросе.


person amburnside    schedule 11.01.2017    source источник


Ответы (1)


Вы можете сначала проверить Быстрый запуск PHP и убедиться, что вы выполнили шаги, описанные в остальная часть данной страницы, чтобы иметь возможность делать запросы к Classroom API, как также упоминается в с помощью клиентских библиотек в пакетных запросах.

После успешной установки и настройки библиотек вы можете попробовать образцы кода, демонстрирующие, как выполнять пакетные запросы с использованием клиентских библиотек Google API.

$courseId = '123456';
$studentEmails = array('[email protected]', '[email protected]');
$service->getClient()->setUseBatch(true);
$batch = $service->createBatch();
foreach($studentEmails as $studentEmail) {
  $student = new Google_Service_Classroom_Student(array(
    'userId' => $studentEmail
  ));
  $request = $service->courses_students->create($courseId, $student);
  $requestId = $studentEmail;
  $batch->add($request, $requestId);
}
$results = $batch->execute();
foreach($results as $responseId => $student) {
  $studentEmail = substr($responseId, strlen('response-') + 1);
  if ($student instanceof Google_Service_Exception) {
    $e = $student;
    printf("Error adding user '%s' to the course: %s\n", $studentEmail,
        $e->getMessage());
  } else {
    printf("User '%s' was added as a student to the course.\n",
        $student->profile->name->fullName, $courseId);
  }
}
$service->getClient()->setUseBatch(false);
person Teyam    schedule 12.01.2017
comment
Спасибо за ваш пост. Я прочитал документацию по быстрому запуску и успешно использовал пакетные запросы в других сервисах Google. просто не похоже на игру в мяч при зачислении учеников в класс - person amburnside; 12.01.2017