Push Registration.create не работает с токенами, созданными с помощью учетной записи делегированного сервиса домена - PullRequest
0 голосов
/ 07 ноября 2018

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-уведомления. Вместо этого я не получаю ни одного. Там нет сообщений об ошибках. Чего мне не хватает?

...