【问题标题】:Adding users from directory to contacts将用户从目录添加到联系人
【发布时间】:2020-08-26 13:17:06
【问题描述】:

我正在尝试将 Gsuite 目录中的用户添加为目录中所有用户的联系人。

var credential = GetCredentialForUser(User.PrimaryEmail);

                // Create Drive API service.
                var peopleService = new PeopleServiceService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential
                });
                PeopleResource.ListDirectoryPeopleRequest peopleRequest =
                 peopleService.People.ListDirectoryPeople();
                peopleRequest.ReadMask = "names,emailAddresses,addresses,phoneNumbers";
                peopleRequest.Sources = PeopleResource.ListDirectoryPeopleRequest.SourcesEnum.DIRECTORYSOURCETYPEDOMAINPROFILE;
                peopleRequest.PageSize = 1000;
                //peopleRequest.SortOrder = (PeopleResource.ConnectionsResource.ListRequest.SortOrderEnum)1;
                var res = peopleRequest.Execute();
                var list = peopleService.ContactGroups.List().Execute();
                //var directoryPeople = peopleService.People.ListDirectoryPeople().Execute();
                var person = res.People.FirstOrDefault();
                foreach (var label in list.ContactGroups)
                {
                    Console.WriteLine(label.ResourceName);
                }
                var all = list.ContactGroups.Where(s => s.Name== "myContacts").FirstOrDefault();
                var members = peopleService.ContactGroups.Members.Modify(new ModifyContactGroupMembersRequest() { ResourceNamesToAdd = new List<string> { person.ResourceName }, ResourceNamesToRemove = new List<string> {  } }, all.ResourceName).Execute();

我收到一个异常

{"Google.Apis.Requests.RequestError\r\nResource name \"people/XXXYYYY\" is not a valid contact person resource. [400]\r\nErrors [\r\n\tMessage[Resource name \"people/XXXYYYY\" is not a valid contact person resource.] Location[ - ] Reason[badRequest] Domain[global]\r\n]\r\n"}

这是否意味着我们无法使用目录中的人员 api 添加用户作为联系人,如果是这样,批量添加的最佳方法是什么?清除所有联系人并从目录中添加新用户?

【问题讨论】:

  • 错误是说资源不正确。您是否尝试过在 api 参考页面上使用 try this
  • 我正在从目录中添加一个用户,只是想知道这是否支持或者我如何从目录中创建一个用户作为联系人?
  • 您是否尝试过使用个人资料电子邮件创建联系人然后添加他们?

标签: c# google-contacts-api google-directory-api google-people-api


【解决方案1】:

问题是您正在尝试将个人资料添加到联系人组。您只能将联系人添加到联系人组。因此,您应该使用个人资料电子邮件创建一个联系人。

【讨论】:

    【解决方案2】:

    这是我设置批量请求以创建联系人的功能。

    将所有目录联系人转换为 Person,然后使用 BatchRequest 发送。 最后执行批量请求创建联系人。

    确保在 Person 中包含主电子邮件地址。请注意,我会检查 ClientData - 这是我存储我的应用名称和 AD 的用户唯一 ID 以跟踪我的应用添加的内容的位置。

        public Person CreateContact(BatchRequests batchRequest, Person contact, List<string> errors)
        {
    
            if (contact.EmailAddresses == null || 
                contact.EmailAddresses.Count == 0 || 
                !contact.EmailAddresses.Any(e => e.Metadata.Primary == true))
                throw new Exception("Primary Email Address Not Found.");
    
            try
            {
                if (!batchRequest.BatchCreateContactsRequest.Contacts.Any(c => c.ContactPerson.ClientData == contact.ClientData))
                {
                    ContactToCreate contactToCreate = new ContactToCreate();
                    contactToCreate.ContactPerson = contact;
                    batchRequest.BatchCreateContactsRequest.Contacts.Add(contactToCreate);
                }
            }
            catch (Exception ex)
            {
                // CurrentPersonEmail is the user's email whose contacts are being modified.
                errors.Add($"Error;{CurrentPersonEmail};{ex.Message}. StackTrace:{ex.StackTrace}");
            }
    
            return contact;
        }
    

    一旦你准备好所有联系人 - 然后执行请求(它不是完整的代码,但我希望你知道如何调用它):

        BatchCreateContactsResponse batchCreateContactsResponse = PeopleService.People.BatchCreateContacts(BatchCreateContactsRequest).Execute();
    

    【讨论】:

    • 我还将 AD 中的所有用户分配到联系人中的组/标签,以便将它们分组在一起。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2012-08-10
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多