【问题标题】:Pulling a user's group membership list in Google Apps在 Google Apps 中提取用户的群组成员列表
【发布时间】:2015-01-18 21:46:17
【问题描述】:

我正在将我的应用程序转换为目录 API,并试图找到一种方法来使用 .NET 在 google 中提取用户的组成员身份。

查看API页面:Google Apps API

我看到“检索组的成员”需要组和成员的密钥。我在 service.Groups 函数中找不到这个调用。我还查看了 service.Membership 功能,但没有找到任何东西。

提取单个用户组成员身份的 API 在哪里?

更新:

这是我尝试使用的调用:

        try
        {
            GroupsResource.ListRequest groups = service.Groups.List();
            groups.Domain = "appDomain.com";
            groups.Customer = strGoogleCusID;
            groups.MaxResults = 100;
            groups.PageToken = "";
            groups.UserKey = "User@appDomain.com";
            var list = groups.Execute();
        }
        catch (Google.GoogleApiException ex)
        {
        }

但它返回错误的请求。我可以使用此函数返回域中的所有组,但如果我指定 UserKey,我会收到 400 Bad Request。

【问题讨论】:

标签: google-api-dotnet-client google-directory-api


【解决方案1】:

您可以使用 Groups -> list API 来指定 userKey。它返回用户是 memberOf 的所有组。这是链接 - https://developers.google.com/admin-sdk/directory/v1/reference/groups/list

【讨论】:

  • 看起来它可能有正确的调用,但 .net API 似乎没有将组列表拉下来;我收到 400 错误请求。请参阅我更新的问题底部的代码。
  • 好的,调用中似乎存在错误。如果您使用客户 ID 调用此函数,它将失败(根据您上面的 API 链接,它应该是可调用的)。但是,如果我使用域,我可以获得组。问题是,我必须使用客户 ID,我的程序使用域别名......有什么想法吗?
  • @DaBlue,你克服了吗?如果我同时提供客户 ID 和 userKey,我会收到 400 错误,如果我只提供一个或其他,那么它可以工作。
  • 我没有时间处理它,所以我将所有组成员资格拉到缓存中,然后使用 linq 在本地处理...
【解决方案2】:
def retrieving_groups():

    response_group = service.groups().list(customer='my_customer').execute()
    for group in response_group['groups']:
        print(group['email'])

这里的函数,它将返回所有组的所有电子邮件地址

【讨论】:

    【解决方案3】:

    在这里聚会有点晚了,但可能会发布以防万一有人需要。这让我感到非常沮丧。

    Google.Apis.Admin.Directory.directory_v1.GroupsResource.ListRequest lr = new Google.Apis.Admin.Directory.directory_v1.GroupsResource.ListRequest(dirservice);
    
    lr.UserKey = "USER_EMAIL_HERE";
    
    foreach (Group gmem in lr.Execute().GroupsValue)
    {
        Console.Writeline(gmem.Email.ToString() + '\n');
    }
    

    lr.Execute().GroupsValue 将返回一个 Group 对象列表,我只是相应地遍历它。

    编辑:

    还可以查看here - 我认为您可能希望省略使用“域”属性而使用“客户”属性..(如果我正确理解要求)。

    【讨论】:

      【解决方案4】:
      IList<Group> g = groupsResourceRequest.Execute().GroupsValue;
      
      this.GroupList.DataSource = g.Select(x => x.Email).ToList();
      

      但是,即使采用上述方式,这种方法的上限也是200。请告诉我如何才能超过200。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-03
        • 2016-12-11
        • 2016-04-25
        • 2014-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多