对Google Admin SDK

时间:2015-05-15 19:45:48

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

从2014年9月23日起a post on the Google Developers blog,它说:

  

对所有域用户的读取权限

     

过去,只有管理员才能访问Admin SDK中的数据。   从今天开始,任何用户(不仅仅是管理员)现在都可以拨打电话   Directory API用于读取域上任何用户的配置文件(当然,我们   将尊重ACL设置和配置文件共享设置。)

但是,尽管我检查了我可以找到的每个Google Apps管理员设置,但对于非管理员用户,我的调用目录API的调用失败。简明代码:

params = {
  client_id: XXXXXX, 
  scope: 'https://www.googleapis.com/auth/admin.directory.user.readonly', 
  response_type: 'token id_token', 
  immediate: true
};
gapi.auth.authorize(params, gHandleAuthResult);
var request = gapi.client.request({
  'path': '/admin/directory/v1/users',
  'params': {
     'customer': 'my_customer',
  }
});
request.then(function (response) {
  var users = response.result.users;
  if (!!users && users.length > 0) {
    users.forEach(function (user) {
      newMember.id = user.id || '';
    }
  }
}

这是使用适用于JavaScript的Google API客户端库。我在多个Google Apps帐户上尝试过此操作,它始终适用于管理员帐户,永远不适用于非管理员帐户,我从中获得响应并且未授权访问此资源/ api"。

A previous post询问此事并收到您必须使用服务帐户的回复,但这是从2014年6月开始,在博客文章之前。我已成功使用服务帐户进行呼叫,但不必这样做,因为它需要服务器充当桥接器。

谷歌开发人员说," Google工程师会监控并回复标签google-admin-sdk",所以希望谷歌能够在这里给出答案。

1 个答案:

答案 0 :(得分:2)

尝试:

var request = gapi.client.request({
  'path': '/admin/directory/v1/users',
  'viewType': 'domain_public'
  'params': {
  'customer': 'my_customer',
  }
});
需要

viewType = domain_public才能以非described in the reference documentation的非管理员身份执行目录操作。在the user accounts docs中还有一些解释。