Google Directory API和Admin SDK

时间:2018-02-27 22:04:35

标签: google-api google-admin-sdk google-directory-api

当我尝试从Directory API访问用户列表时,我遇到错误403: Not Authorized to access this resource/api。 我按照这里的步骤进行了操作:https://developers.google.com/admin-sdk/directory/v1/guides/delegation

  • Google管理控制台上的域名与Google API中的组织名称相同
  • 已启用Admin SDK
  • API访问管理器中允许使用服务帐户
  • 身份验证有效,我有一个令牌

这是我使用的代码

const google = require('googleapis').google;
const directory = google.admin('directory_v1');

const key = require('./creds.json');
const scopes = [ "https://www.googleapis.com/auth/admin.directory.user", "https://www.googleapis.com/auth/admin.directory.group", "https://www.googleapis.com/auth/admin.directory.orgunit"]

jwtOptions = {
  email: key.client_email,
  key: key.private_key,
  scopes: scopes,
}

const jwtClient = new google.auth.JWT(jwtOptions)

jwtClient.authorize( (err, tokens) => {
  if (err) {
    console.log(err);
    return;
  }

  // Make an authorized request to list Drive files.
  directory.users.list({
    auth: jwtClient,
    domain: 'mydomain.com',
  }, (err, resp) => {
    if (err) {
      console.log('error')
      console.log(err.errors)
    } else {
      console.log('success')
    }
  });
});

我错过了什么?

2 个答案:

答案 0 :(得分:0)

委派后,您必须授权您的服务帐户: 转到安全>高级设置>管理API客户端访问 然后添加您的服务帐户ID和范围(以逗号分隔)。 等待24小时,然后您就可以将服务帐户用于目录api。

Google有一些时间延迟,请耐心等待。

答案 1 :(得分:-1)

最后,我们尝试切换到另一种语言(PHP),并且代码正常运行。 Google Node SDK似乎有问题,我们已经报告了该问题。