Google Clas-s-room API - 权限被拒绝
Posted
技术标签:
【中文标题】Google Clas-s-room API - 权限被拒绝【英文标题】:Google Clas-s-room API - PERMISSION DENIED 【发布时间】:2019-12-31 17:57:53 【问题描述】:这是我第一次使用 Google Clas-s-room API。我正在尝试创建一个脚本,列出每门课程所有者的电子邮件。
我想通过修改快速入门“listCourses()”示例来做到这一点,但是当尝试使用 Clas-s-room.UserProfiles.get(); 获取用户配置文件时;我收到 403 PERMISSION_DENIED 错误。
我已经检查了列出的每个范围都包括在内:
"oauthScopes": [
"https://www.googleapis.com/auth/clas-s-room.courses",
"https://www.googleapis.com/auth/clas-s-room.profile.emails",
"https://www.googleapis.com/auth/clas-s-room.profile.photos",
"https://www.googleapis.com/auth/clas-s-room.rosters",
"https://www.googleapis.com/auth/clas-s-room.rosters.readonly"
]
运行脚本的用户在 GSuite 上注册为超级管理员。
数据访问已被检查为允许共享数据。
这是我正在使用的代码
function listCourses()
var response = Clas-s-room.Courses.list();
var courses = response.courses;
if (courses && courses.length > 0)
for (i = 0; i < courses.length; i++)
var course = courses[i];
var owner = Clas-s-room.UserProfiles.get(course.ownerId).emailAddress;
Logger.log('%s (%s) - o: %s - stat: %s', course.name, course.id, owner, course.courseState);
else
Logger.log('No courses found.');
据我所知,这应该让我得到课程列表、他们的 ID 号、所有者的电子邮件和课程状态。
但是执行在 UserProfile.get() 行停止并且程序停止并出现 403 错误。
有谁知道问题出在哪里以及如何解决?非常感谢。
【问题讨论】:
我测试了你的代码,它对我有用,我认为可能发生的情况是一个或多个类所有者可能在域之外。如果是这种情况,请尝试通过Clas-s-room.UserProfiles.get()
获取他们的信息。您应该查看 this documentation 关于此特定问题的信息并测试 get 方法 here 以查看特定用户是否失败。
非常感谢!感谢您的回复,我意识到确实只有某些用户 ID 会使脚本停止。我怀疑之前的管理员删除了一些用户,而没有先将他们的课程重新分配给新老师,这就是导致问题的原因。非常感谢! :)
没问题,我会发布文档的答案!
【参考方案1】:
发布文档。
可能发生的情况是一个或多个类所有者可能不在域中。如果是这种情况,请尝试使用 Clas-s-room.UserProfiles.get() 获取他们的信息。您应该查看 this documentation 关于这个特定问题并测试 get 方法 here 以查看特定用户是否失败。
显然是这样,OP 确认某些用户确实已从域中删除。
【讨论】:
以上是关于Google Clas-s-room API - 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Google Clas-s-room API 列出没有注册码的课程?
(403) 请求的身份验证范围不足 - OAuth 范围 Google Clas-s-room API
如何使用他们的 API 访问 Google Clas-s-room 中的“等级类别”
如何在 php 中使用 api 从 Google Clas-s-room 中检索作业、测验分数