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 中检索作业、测验分数

为啥我在使用 Google Clas-s-room API 时会收到 404 错误?

获取 Google Clas-s-room Meet 链接