Google api 谷歌课堂推送通知注册权限仅针对学生被拒绝

Google api 谷歌课堂推送通知注册权限仅针对学生被拒绝,google-api,google-classroom,Google Api,Google Classroom,我正在尝试使用PythonGoogleAppClient为Google教室创建推送通知注册。我的代码适用于用户是教师的班级,但不适用于用户是给定班级的学生的班级。我试过gsuite和非gsuite账户 错误为googleapiclient.errors.HttpError: 有关守则如下: def寄存器(自身,courseId): 正文=常量。注册正文(courseId) o=self.service.registrations().create(body=body.execute()) 返回

我正在尝试使用Python
GoogleAppClient
为Google教室创建推送通知注册。我的代码适用于用户是教师的班级,但不适用于用户是给定班级的学生的班级。我试过gsuite和非gsuite账户

错误为
googleapiclient.errors.HttpError:

有关守则如下:


def寄存器(自身,courseId):
正文=常量。注册正文(courseId)
o=self.service.registrations().create(body=body.execute())
返回o[“registrationId”],o[“expiryTime”]
其中,
self.service
build(“教室”,“v1”,凭证=获取凭证(uid,db))

常量。注册\u body
返回

{
“提要”:{
“feedType”:“课程、工作、变化”,
“课程工作变更信息”:{
“courseId”:courseId,
},
},
“分类主题”:{
“topicName”:secret.pubSubTopicName,
},
}
我还启用了所有相关API作用域,以从故障排除中删除该作用域:

作用域=[
"https://www.googleapis.com/auth/classroom.push-notifications",
"https://www.googleapis.com/auth/classroom.coursework.students.readonly", 
"https://www.googleapis.com/auth/classroom.coursework.me.readonly", 
"https://www.googleapis.com/auth/classroom.announcements.readonly",
"https://www.googleapis.com/auth/classroom.courses.readonly",
"https://www.googleapis.com/auth/classroom.courseworkmaterials.readonly",
"https://www.googleapis.com/auth/classroom.topics.readonly",
“openid”,
]
我不确定这是否是一个代码错误,因为它在用户是教师时工作。这是谷歌课堂API的一个限制吗

完整代码:

这是预期行为: 您的代码很好,这正按预期工作。推送通知是一种用于管理课程的工具,而不是供学生使用,因此只有教师和管理员才能使用

虽然不是很明确,但以下语句暗示了一个事实,即用户需要是教师才能管理通知:

您的云发布/子主题仅接收有关资源的通知,您可以使用创建注册时提供的凭据查看这些资源。例如,如果用户从您的应用程序中撤消权限,或作为教师被删除,则通知将不再发送

参考:
这是预期行为: 您的代码很好,这正按预期工作。推送通知是一种用于管理课程的工具,而不是供学生使用,因此只有教师和管理员才能使用

虽然不是很明确,但以下语句暗示了一个事实,即用户需要是教师才能管理通知:

您的云发布/子主题仅接收有关资源的通知,您可以使用创建注册时提供的凭据查看这些资源。例如,如果用户从您的应用程序中撤消权限,或作为教师被删除,则通知将不再发送

参考:

谢谢。我也在谷歌的问题跟踪上发布了一个问题(在你回复之前),他们最近也回复了同样的答案。谢谢你。我也在谷歌的问题跟踪上发布了一个问题(在你回复之前),他们最近也回复了同样的答案。