Push Registration.create не работает с токенами, сгенерированными с помощью учетной записи делегированной службы домена.
Registration.create возвращает успешный ответ, но в тему pubsub не отправляются уведомления.
Ответ от Registration.create:
{
"registrationId": "-4693431763215581184",
"feed": {
"feedType": "COURSE_WORK_CHANGES",
"courseWorkChangesInfo": {
"courseId": "24492527610"
}
},
"cloudPubsubTopic": {
"topicName": "projects/littlesis-cloud/topics/watch-classroom"
},
"expiryTime": "2018-11-14T16:48:50.340Z"
}
Если я создаю тот же файл Registration.create в приложении Script, я получаю тот же ответ:
{
feed:
{
feedType:COURSE_WORK_CHANGES,
courseWorkChangesInfo:
{courseId:24492527610}
},
cloudPubsubTopic:{topicName:projects/littlesis-cloud/topics/watch-classroom},
registrationId:-4693431763215581184,
expiryTime:2018-11-14T16:50:56.819Z
}
Но теперь, после запуска Registrations.create в Apps Script, я получаю push-уведомления. Обратите внимание на тот же регистрационный идентификатор.
Оба раза я использовал одну и ту же учетную запись супер администратора. Учетная запись службы, проект сценария приложений и тема pubsub находятся в одном консольном проекте. И сценарий приложения, и токен, сгенерированный учетной записью службы, имеют одинаковые области действия. Учетная запись службы имеет те же предоставленные области в консоли администратора.
Создание метода токена в NodeJS:
function setUser(primaryEmail){
return new Promise((resolve, reject) => {
let jwtClient = {};
try {
jwtClient = new google.auth.JWT({
key: this.serviceAccount.private_key,
email: this.serviceAccount.client_email,
scopes: [
"https://www.googleapis.com/auth/classroom.courses",
"https://www.googleapis.com/auth/classroom.profile.emails",
"https://www.googleapis.com/auth/classroom.profile.photos",
"https://www.googleapis.com/auth/classroom.push-notifications",
"https://www.googleapis.com/auth/classroom.rosters",
"https://www.googleapis.com/auth/classroom.coursework.students"
],
subject: primaryEmail || this.serviceAccount.client_email,
},
);
}
catch (error) {
console.error(error);
throw new Error(error);
}
jwtClient.authorize((err) => {
if (err) {
console.log(err);
reject(err);
} else {
this.client = jwtClient;
this.classroom = google.classroom({version: 'v1', auth: jwtClient});
resolve(jwtClient);
}
});
});
}
createCourseWorkRegistration(pubSubTopic, courseId){
let postBody = {
feed:{
feedType: 'COURSE_WORK_CHANGES',
courseWorkChangesInfo:{
courseId: courseId
}
},
cloudPubsubTopic: {
topicName: pubSubTopic
}
};
let options = {
resource: postBody
};
return this.classroom.registrations.create(options)
}
Метод сценариев приложений :
function myFunction() {
var resp = Classroom.Registrations.create(
{
feed:{
feedType: 'COURSE_WORK_CHANGES',
courseWorkChangesInfo:{
courseId: '24492527610'
}
},
cloudPubsubTopic: {
topicName: 'projects/littlesis-cloud/topics/watch-classroom'
}
}
);
console.log(resp)
Logger.log(resp)
}
Каков ожидаемый результат? Что ты видишь вместо этого? Если вы видите сообщения об ошибках, пожалуйста, предоставьте их.
Я ожидаю получить push-уведомления. Вместо этого я не получаю ни одного. Там нет сообщений об ошибках. Чего мне не хватает?