从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",所以希望谷歌能够在这里给出答案。
答案 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中还有一些解释。