帐户仅限 google 课堂 API
Account restricted to google Classroom API
我的同事和我有一个 C# WPF 项目,它管理 Google 课堂中的课程。
我们在 Google API 平台创建项目。我们是项目的所有者。
两者都有 OAuth 2.0 客户端 ID。 (不过没关系)
我允许所有课堂 API 的范围。
我是我们 Gsuite for Education 的域管理员。 Google 域中允许使用课堂 API。
他可以登录并使用程序,没有任何错误,各项功能都可以。
我不能,因为我收到错误 400,invalid_request 帐户受限。
我尝试使用 API Explorer,只有当我想获取 google 课堂课程的主题列表时才会出现此错误。
范围:
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";
}
答案:
这听起来像是您的帐户有问题。要获得解决方案,您应该联系 G Suite 支持人员。
更多信息:
如果尝试验证的帐户存在帐户限制,那么 Stack Overflow 社区无法提供帮助 - 特别是如果相同的代码适用于您域中的另一位老师 和,您在 courses.topics
参考页的 Try this API
函数中收到相同的响应。
您可以使用 this page
上的链接联系 G Suite 支持
2020.06.01 更新:
这实际上似乎是一个错误!
Google 的问题跟踪器上有一份报告,其中详细说明了同类行为:
鉴于回复,Google 似乎确实知道这个问题,但我认为最好对此进行更新。
对于未来的读者:如果这个问题还没有被修复,你也可以点击前面提到的问题页面左上角问题编号旁边的☆,它可以让Google 知道有更多人遇到此问题,因此更有可能更快地被发现。
参考文献:
我的同事和我有一个 C# WPF 项目,它管理 Google 课堂中的课程。 我们在 Google API 平台创建项目。我们是项目的所有者。 两者都有 OAuth 2.0 客户端 ID。 (不过没关系) 我允许所有课堂 API 的范围。
我是我们 Gsuite for Education 的域管理员。 Google 域中允许使用课堂 API。
他可以登录并使用程序,没有任何错误,各项功能都可以。 我不能,因为我收到错误 400,invalid_request 帐户受限。
我尝试使用 API Explorer,只有当我想获取 google 课堂课程的主题列表时才会出现此错误。
范围: 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";
}
答案:
这听起来像是您的帐户有问题。要获得解决方案,您应该联系 G Suite 支持人员。
更多信息:
如果尝试验证的帐户存在帐户限制,那么 Stack Overflow 社区无法提供帮助 - 特别是如果相同的代码适用于您域中的另一位老师 和,您在 courses.topics
参考页的 Try this API
函数中收到相同的响应。
您可以使用 this page
上的链接联系 G Suite 支持2020.06.01 更新:
这实际上似乎是一个错误!
Google 的问题跟踪器上有一份报告,其中详细说明了同类行为:
鉴于回复,Google 似乎确实知道这个问题,但我认为最好对此进行更新。
对于未来的读者:如果这个问题还没有被修复,你也可以点击前面提到的问题页面左上角问题编号旁边的☆,它可以让Google 知道有更多人遇到此问题,因此更有可能更快地被发现。