Как исправить проблему с отказом в разрешении на проект для обновления черновика оценки и присвоения оценки ученику, отправленному из Google Classroom

#php #google-oauth #google-api-php-client #google-api-client #google-classroom

Вопрос:

Я хочу обновить черновую оценку и присвоенную оценку из Google Classroom с помощью API. Следующая проблема возникает, когда я тестирую, чтобы обновить черновую оценку и присвоенные оценки, используя этот API.

Проблема:1

 {
  "error": {
    "code": 403,
    "message": "@ProjectPermissionDenied The Developer Console project is not permitted to make this request.",
    "status": "PERMISSION_DENIED"
  }
}
 

Показывает всплывающее сообщение об ошибке:

Эта ошибка может быть вызвана использованием недостаточного типа учетных данных.
Попробуйте использовать OAuth 2.0.

Код локального Хоста:

 $client = getClient();
        $service = new Google_Service_Classroom($client);
        $courseId = '393351980716';
        $courseWorkId = '393445838699';
        $id = 'Cg0Iu5q5vHkQ657M2bkL';
        $post_body = new Google_Service_Classroom_StudentSubmission(array(
            'assignedGrade' => 10,
            'draftGrade' => 90
        ));
        $params = array(
            'updateMask' => 'assignedGrade,draftGrade'
          );

        $list = $service->courses_courseWork_studentSubmissions->patch($courseId, $courseWorkId, $id, $post_body,$params);
 

Затем, когда я запускаю приведенный выше код на локальном хосте, я вижу проблему-2:

Проблема-2

 Fatal error: Uncaught GoogleServiceException: {
  "error": {
    "code": 403,
    "message": "@ProjectPermissionDenied The Developer Console project is not pe
rmitted to make this request.",
    "errors": [
      {
        "message": "@ProjectPermissionDenied The Developer Console project is no
t permitted to make this request.",
        "domain": "global",
        "reason": "forbidden"
      }
    ],
    "status": "PERMISSION_DENIED"
  }
}
 

Как решить эту проблему?

Ответ №1:

В соответствии с документацией Classroom API:

ProjectPermissionDenied указывает, что запрос пытался изменить ресурс, связанный с другим проектом Консоли разработчика.

Возможное действие: Укажите, что ваше приложение не может выполнить желаемый запрос. Это может быть сделано только проектом Консоли разработчика с идентификатором клиента OAuth, который создал ресурс.

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

Вам придется создать эти ресурсы в одном проекте, чтобы успешно выполнить этот запрос.

Ссылка

Комментарии:

1. Теперь я могу обновить черновую оценку, используя среду Try this API , потому что я создал курс вручную, где «связано с разработчиком»: верно . Но я не могу обновить черновую оценку с помощью localhost. Я обновил свой вопрос, Теперь вышеуказанная проблема-2 РАЗРЕШЕНИЕ_ОПРЕДЕЛЕНО появляется всякий раз, когда я хочу обновить черновую оценку с локального хоста. Как решить проблему-2.

Ответ №2:

Для этого запроса API вашему ключу API требуется одна из следующих разрешенных областей

Для областей авторизации требуется одна из следующих областей OAuth:

https://www.googleapis.com/auth/classroom.coursework.students
https://www.googleapis.com/auth/classroom.coursework.me

Комментарии:

1. Я уже добавил эти области. Но я не могу обновить черновую оценку с помощью localhost. Теперь описанная выше проблема-2 РАЗРЕШЕНИЯ_ОПРЕДЕЛЕНО появляется всякий раз, когда я хочу обновить черновую оценку с локального хоста. Как решить проблему-2.