有没有办法使用Admin SDK检查成员的组:directOnly = false?

时间:2014-03-08 17:34:56

标签: google-admin-sdk

在检索用户所属的gropus时,Provisioning API提供了“directOnly”参数来控制组的范围。我应该从Provisioning API迁移Admin SDK,但我找不到使用directOnly = false为用户检索组的方法。如何使用Directory API执行此操作?

我实现了以下(伪语言),因为我找不到办法。 但我认为这不是有效的方法。 我想知道是否有任何“directOnly = false”的计划。

// 1. List all groups in domain
allGroupsInDomain = ... // "List all groups in domain"
// 2. List all members for each groups
allMembersForGroup = {}
for (group in allGroupsInDomain) {
    allMembersForGroup[group] = ... // "List all members for group"
}

// 3. List all users in domain
allUsersInDomain = "List all users in domain"
// 4. List all groups for user(direct only)
allGroupsForUser = {} // I want to get this for all users
for (user in allUsersInDomain) {
    directGroupsForUser = ... // "List all groups for user(direct only)"
    for (group in directGroupsForUser) {
        allGroupsForUser[user].add(group);
        allGroupsForUser[user].add(searchAncestorsOf(group));
    }
}

// 5. Calculate all groups for user contains not directly group using results of (1,2,3,4)
function searchAncestorsOf(group) {
    ancestors = []
    for (group_ in allGroupsInDomain) {
        if (group_.hasMember(group)) {
            ancestors.add(group_);
            ancestors.add(searchAncestorsOf(group_));
        }
    }
    return ancestors;
}

1 个答案:

答案 0 :(得分:1)

没有单一的API调用方法来获取Admin SDK当前可用的用户的直接和间接组成员身份。对于少数用户,我能想到的最快的方法是:

  1. 获取具有members.list和userKey参数的用户的所有直接成员资格组。

  2. 对于用户是其直接成员的每个组,通过使用members.list来确定该组是否是其他组的成员,其中userKey是这次的每个组而不是用户。如果该组是另一个组的成员,则该用户将是该组的间接成员。