帐户仅限于 Google Classroom API

2023-12-02

我和我的同事有一个 C# WPF 项目,它管理 Google Classroom 中的课程。 我们在 Google API 平台中创建项目。我们是该项目的所有者。 两者都有 OAuth 2.0 客户端 ID。 (但这并不重要) 我允许 Classroom API 的所有范围。

我是 Gsuite for Education 的域管理员。域中允许使用 Google Classroom API。

他可以登录并使用该程序,没有任何错误,各项功能都正常。 我不能,因为我收到错误 400,invalid_request 帐户受限。

我尝试使用 API Explorer,只有当我想获取谷歌课堂课程的主题列表时才会出现此错误。

Scope: https://www.googleapis.com/auth/classroom.topics https://www.googleapis.com/auth/classroom.topics.readonly openid

        txtLog.Text += "Try login to Google...\n"; 
        UserCredential credential;

        using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
        {
            
            // The file token.json stores the user's access and refresh tokens, and is created
            // automatically when the authorization flow completes for the first time.
            string credPath = "token.json";
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                new string[] 
                { 
                    ClassroomService.Scope.ClassroomCourses, 
                    ClassroomService.Scope.ClassroomRosters, 
                    ClassroomService.Scope.ClassroomProfileEmails, 
                    ClassroomService.Scope.ClassroomProfilePhotos,
                    ClassroomService.Scope.ClassroomTopics
                },
                "admin",
                CancellationToken.None,
                new FileDataStore(credPath, true)).Result;
            txtLog.Text += $"Credential file saved to: {credPath}\n";
        }

        // Create Classroom API service.
        service = new ClassroomService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Jedlik Classroom Manager",
        });

        // Define request parameters.
        CoursesResource.ListRequest request = service.Courses.List();
        request.PageSize = 100;

        // List courses.
        ListCoursesResponse response = request.Execute();
        if (response.Courses != null && response.Courses.Count > 0)
        {
            txtLog.Text +=$"Number of coureses: {response.Courses.Count}\n";
            lstCourses.ItemsSource = response.Courses.ToList();
            lstCourses.DisplayMemberPath = "Name";
            lstCourses.SelectedValuePath = "Id";
            lstCourses.SelectedIndex = 0;
        }
        else
        { 
            txtLog.Text += $"No courses found\n";
        }

Answer:

这听起来像是您的帐户有问题。要获得解决方案,您应该联系 G Suite 支持。

更多信息:

如果尝试验证的帐户存在帐户限制,那么 Stack Overflow 社区无法提供帮助 - 特别是如果相同的代码适用于您域中的另一位教师and您在以下位置收到相同的回复Try this API函数在courses.topics参考页。

您可以使用以下链接联系 G Suite 支持这一页

2020年6月1日更新:

这实际上似乎是一个错误!

Google 的问题跟踪器上有一份报告,详细介绍了相同类型的行为:

  • 如果“在没有单独控制的情况下访问附加服务”设置为“关闭”,则请求 course.topics 范围会出现错误。

鉴于回复,谷歌似乎确实知道这个问题,但我认为最好对此进行更新。

对于未来的读者:如果此问题尚未修复,您还可以点击上述问题页面左上角问题编号旁边的 ☆,这可以让 Google 知道更多的人遇到此问题,因此更有可能更快地被看到。

参考:

  • Google Classroom API - 方法courses.topics
  • 联系 G Suite 支持
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

帐户仅限于 Google Classroom API 的相关文章

随机推荐

  • 当 Pod“忙”时向 Kubernetes 指定

    我的一项微服务正在 Kubernetes 上运行 我想在 Pod 繁忙时指定 K8s 负载均衡器 因为我当前得到的行为不正常 一个例子 我有 8 个 pod 正在运行 每个 pod 一次可以处理 1 个请求 每个请求占用分配给 Pod 的
  • 模糊匹配微小差异

    我有一列公司名称 我想计算该列中有多少家不同的公司 在本栏目中 一些相同的公司名称略有不同 例如 这些公司应该只计算一次 ASAHI INTECC CO LTD Asahi Intecc USA Inc ASAHI INTECC USA I
  • matplotlib 箭头和纵横比

    如果我运行这个脚本 import matplotlib pyplot as plt import pylab as plab plt figure plt plot 0 2 2 0 color c lw 0 5 plt plot 1 2 2
  • 排序向量查找的更快版本 (MATLAB)

    我在 MATLAB 中有以下类型的代码 indices find 1 2 2 3 3 3 4 5 6 7 7 3 这将返回 4 5 6 数组中元素的索引等于 3 现在 我的代码用很长的向量来做这种事情 向量是总是排序的 因此 我想要一个用
  • @csrf_exempt 不适用于基于通用视图的类

    class ChromeLoginView View def get self request return JsonResponse status request user is authenticated method decorato
  • 在Nativescript中获取mac地址和ip

    我们正在实现一个用于应用程序分发的服务器 我们需要通过以下方式限制对应用程序的访问 MAC地址 ip 目前我还没有找到任何可以在nativescript中从设备获取这些数据的模块 所以我不知道是否有插件或者我怎样才能实现这一点 在nativ
  • 带有 PathMatcher 的 DirectoryStream 不返回任何路径

    尽管我已经看到了很多类似问题的答案 但我无法使以下代码按我认为应该的方式工作 File dataDir new File C User user id PathMatcher pathMatcher FileSystems getDefau
  • 如何快速学习 Prism for Silverlight?

    我需要使用 Prism 制作 Silverlight 应用程序 学习使用 Silverlight Prism 制作简单应用程序的最佳方法是什么 还建议任何同样的好书 谢谢 我也有 daageu 提到的书 也会推荐它 但为了更快地加快学习 P
  • perl 子例程返回 array 和 str 但它们正在合并

    sub process feed my line my lines my last received while 1 if line push lines 1 line 2 else last received line last prin
  • 当文本字段等于字符串时,ios 使按钮更改视图

    我正在制作这种密码来跳过游戏中的关卡 但我不知道需要什么代码来使按钮更改视图控制器 IBAction button id sender if txt text isEqualToString passwordToSkipLevel1 Cod
  • 终止 Java 程序

    我找到了终止 关闭或停止 我的 Java 程序的方法 我找到了两个解决方案 using return 当我想退出或终止我的程序执行时 我添加这个 using 系统 exit 有时我也用过它 我读到系统 exit from 这个问题 所以 我
  • 锚标记的填充

    我有一个 asp net 页面 其代码如下所示
  • 我需要 ETL 吗?

    我们目前使用 Datastage ETL 每天导出包含 15 个表 3 个不同模式 中的数据的 CSV 文本文件 我想知道是否有一种更简单的方法可以在不使用 ETL 的情况下完成此任务 我尝试过脚本拉 它看起来简单 快速 但它又是一个 ET
  • 如何使用 objectMapper 设置 java.time.Instant 的字符串格式?

    我有一个实体java time Instant对于创建的数据字段 Getter Setter AllArgsConstructor NoArgsConstructor EqualsAndHashCode public class Item
  • Javafx 2.2 和雪豹

    我需要在 Mac 计算机上部署 JavaFX2 2 应用程序 OS X 10 7 或更高版本适用于 Java 7u7 OS X 10 6 怎么样 我们有什么解决办法吗 我认为 10 6 可以更新到 Java 6u35 并且我在某处读到 2
  • 如何从使用 /GL 编译的 .obj 文件确定主要编译器版本?

    我试图从以下位置确定 Visual Studio 版本 2002 2003 2005 2008 2010 2012 2013 2015 obj使用链接时间代码生成选项生成的文件 我使用 MSVC2012 生成的文件具有以下 COFF 标头内
  • 在 Javascript 中推送对象

    我需要在 Javascript 中将对象推送到数组 但每次推送都会覆盖我已经添加的相同对象 例如 This is object list var NewIssue This is array var newIssueList functio
  • 从索引的列/行数组填充出现次数矩阵

    我正在寻找一种有效的方法来从两个包含索引的数组创建出现矩阵 一个代表行索引在这个矩阵中 另一个是列矩阵 例如 我有 matrix will be size 4x3 in this example array of rows idxs wit
  • Python 中互斥锁的正确使用

    我从 python 中的多线程开始 或者至少我的脚本可能创建多个线程 这个算法是互斥体的正确用法吗 我还没有测试过这段代码 它可能根本无法工作 我只希望 processData 在一个线程中运行 一次一个 并且主 while 循环继续运行
  • 帐户仅限于 Google Classroom API

    我和我的同事有一个 C WPF 项目 它管理 Google Classroom 中的课程 我们在 Google API 平台中创建项目 我们是该项目的所有者 两者都有 OAuth 2 0 客户端 ID 但这并不重要 我允许 Classroo