API групп Google – getUsers() У вас нет разрешения на просмотр списка участников группы:

Всем привет!

У меня есть скрипт Google, который проверяет, являются ли адреса электронной почты членами группы или нет, с помощью функции getUsers().

Слишком далеко:

  • Я активировал "Службу каталогов Admin SDK"
  • У меня есть права администратора

Для большинства групп это волшебство, однако я получаю ошибку авторизации в случае некоторых групп.

Сообщение об ошибке из журнала:

  • "У вас нет разрешения на просмотр списка участников группы: foo@bar"

Есть идеи, в чем может быть проблема? Все очень ценится. Спасибо!


person Zoru    schedule 11.05.2015    source источник
comment
Вопросы, требующие помощи в отладке (почему этот код не работает?), должны включать желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для их воспроизведения, в самом вопросе. Вопросы без четкой формулировки проблемы бесполезны для других читателей. См.: Как создать минимальный, полный и проверяемый пример.   -  person DaImTo    schedule 12.05.2015


Ответы (1)


Проблема в том, что служба GroupsApp использует разрешения GROUP, чтобы определить, можете ли вы просматривать список участников. По умолчанию для групп этот доступ ограничен владельцами и менеджерами группы. Итак, у вас есть два варианта:

1) Сделать себя владельцем или менеджером группы ИЛИ

2) Используйте Admin SDK для проверки членства в группе. Административный SDK позволяет любому суперадминистратору просматривать список пользователей в группе. Чтобы узнать, является ли пользователь членом группы, вам нужно будет получить группу, затем просмотреть список участников, а затем сравнить каждого члена с пользователем, которого вы ищете:

 function isMember(groupKey,userKey){
    //groupKey: [email protected]
    //userKey: [email protected] 

    var memberList = [];

    //Get the members list from the group
    var response = AdminDirectory.Members.list(groupKey);
    memberList = memberList.concat(response.members);
    while (response.nextPageToken){
      response = AdminDirectory.Members.list(groupKey,{pageToken: response.nextPageToken});
      memberList = memberList.concat(response.members);
    }

    if (memberList.length > 1){

      for (var x in memberList){
        if (memberList[x].email == userKey){return true;}
     }
   }
 }

Подробнее здесь

person Charlie Patton    schedule 31.05.2016