Как получить токен доступа для admin.directory.userlist api? - PullRequest
1 голос
/ 30 сентября 2019

Я создал аддон gmail. я пытаюсь вызвать API curl \ 'https://www.googleapis.com/admin/directory/v1/users?key=[YOUR_API_KEY]' \ --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \ --header 'Accept: application/json' \ --compressed

var loggedUser = Session.getActiveUser().getEmail();
var domain = loggedUser.split('@')[1];
do {
    page = AdminDirectory.Users.list({
    domain: domain,
    maxResults: 100,
    pageToken: pageToken,
   });
   var users = page.users;
    if (users) {
       for (var i = 0; i < users.length; i++) {
          var user = users[i];
          emails.push(user.primaryEmail);
       }
     } else {
       Logger.log('No users found.');
    }
    pageToken = page.nextPageToken;
   } while (pageToken);

Я добавил все необходимые области https://www.googleapis.com/auth/admin.directory.user.readonly https://www.googleapis.com/auth/admin.directory.user в моем appmanifest. если я пытаюсь поразить API напрямую, я получаю 401. после предоставления областей, если мне пришлось вызывать этот API вручную, может кто-нибудь помочь мне, как получить access_token и api_key для вызова API?

1 Ответ

0 голосов
/ 01 октября 2019

Это работает для меня:

Пример кода:

...
var loggedUser = Session.getActiveUser().getEmail();
var domain = loggedUser.split('@')[1];
  var pageToken;
  var emails=[];
do {
    page = AdminDirectory.Users.list({
    domain: domain,
    maxResults: 100,
  //  pageToken: pageToken,
   });

  var url='https://www.googleapis.com/admin/directory/v1/users?domain='+domain;
      var options = {
    "method": "get",
    "pageToken": pageToken,    
    "muteHttpExceptions": true,
    "headers": {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
   "contentType": "application/json",       
   }
  var page = JSON.parse(UrlFetchApp.fetch(url,options));  
  Logger.log(page);
   var users = page.users;
    if (users) {
       for (var i = 0; i < users.length; i++) {
          var user = users[i];
          emails.push(user.primaryEmail);
       }
     } else {
       Logger.log('No users found.');
    }
    pageToken = page.nextPageToken;
   } while (pageToken);
...

appsscript.json:

{
  "timeZone": "America/Los_Angeles",
  "dependencies": {
    "enabledAdvancedServices": [{
      "userSymbol": "AdminDirectory",
      "serviceId": "admin",
      "version": "directory_v1"
    }, {
      "userSymbol": "Gmail",
      "serviceId": "gmail",
      "version": "v1"
    }]
  },
  "webapp": {
    "access": "DOMAIN",
    "executeAs": "USER_DEPLOYING"
  },
  "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute", "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/admin.directory.user" ],
   "urlFetchWhitelist": [
    "https://www.googleapis.com/admin/directory/v1/users?domain="
  ],
  "executionApi": {
    "access": "MYSELF"
  },
  "gmail": {
    "name": "XXX",
    "logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/XXX.png",
    "contextualTriggers": [{
      "unconditional": {
      },
      "onTriggerFunction": "XXX"
    }],
    "primaryColor": "#4285F4",
    "secondaryColor": "#4285F4",
    "openLinkUrlPrefixes": ["https://mail.google.com/"]
  }
}
...