代码:403消息:呼叫者没有权限

时间:2017-04-27 15:30:38

标签: google-api google-classroom

我正在使用Google Classroom API将我的业务系统集成到Google Classroom中。我可以使用服务帐户创建和列出课程。但总是使用OwnerId =“我”。我正在创建的所有课程都使用我的服务帐户的client_id。 如果我尝试使用其他ownerID创建,我会收到错误:

代码:403 消息:调用者没有权限 领域:全球 理由:禁止 状态:PERMISSION_DENIED

有关如何解决此问题的任何提示?

谢谢。

1 个答案:

答案 0 :(得分:0)

在创建凭据之前,您必须使用电子邮件来模拟用户,然后再为ClassRoom创建实例

.setServiceAccountUser("UserEmail")

示例代码附在下面

final NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
                GoogleCredential credential = new GoogleCredential.Builder()
                        .setTransport(httpTransport)
                        .setJsonFactory(JSON_FACTORY)
                        .setServiceAccountId("class-room-service-account-id")
                        .setServiceAccountPrivateKeyFromP12File(new File("/Credentials/MyProject.p12"))
                        .setServiceAccountScopes(SCOPES)
                        .setServiceAccountUser("UserEmail") //There should be the Email for the user you are creating course
                        .build();

                final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
                ClassRoom service = new Classroom.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
                        .setApplicationName(APPLICATION_NAME)
                        .build();

此后,使用OwnerId“ me”将为模拟的用户创建课程。