代码:403 消息:调用者没有权限
Posted
技术标签:
【中文标题】代码:403 消息:调用者没有权限【英文标题】:Code: 403 Message: The caller does not have permission 【发布时间】:2017-09-25 11:59:51 【问题描述】:我正在使用 Google Clas-s-room API 将我的业务系统集成到 Google Clas-s-room。我可以使用服务帐户创建和列出课程。但始终使用 OwnerId = "me"。我正在创建的所有课程都使用我的服务帐户的 client_id。 如果我尝试使用其他 ownerID 创建,则会收到错误消息:
代码:403 消息:调用者没有权限 领域:全球 原因:禁止 状态:PERMISSION_DENIED
关于如何解决这个问题的任何提示?
谢谢。
【问题讨论】:
您可以参考这个thread。确保您尝试添加的帐户与课程位于同一域中。此外,如here 所述,您需要仔细检查您当前的活动帐户并确保您当前的活动帐户具有该权限。否则你需要去你的谷歌云控制台将权限分配给你当前的活动帐户,或者你需要切换你的帐户。 谢谢。帐户与课程在同一个域中。我尝试使用 Google 管理控制台设置权限。仍然收到错误域:全局原因:禁止状态:PERMISSION_DENIED 我在尝试从课程中删除教师时遇到同样的错误 【参考方案1】:在创建 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 Clas-s-room.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.build();
在此之后使用 OwnerId "me" 将为模拟用户创建课程。
【讨论】:
以上是关于代码:403 消息:调用者没有权限的主要内容,如果未能解决你的问题,请参考以下文章
调用 GMAIL API 时出现间歇性错误 - “调用者没有权限”
错误: (gcloud.beta.functions.deploy) ... message=[调用者没有权限]
错误:匿名调用者没有 storage.objects.get 访问 Google Cloud Storage 对象的权限
如何从 Google OAuth 2.0 Playground 运行 Google App Script 功能 |调用者没有权限