【问题标题】:Update Google Domain Shared Contact Photo更新 Google 域共享联系人照片
【发布时间】:2021-05-09 09:46:24
【问题描述】:

我正在使用 Google Apps 脚本访问域共享联系人并使用 People API 更新联系人信息。

我可以使用以下方法成功地将联系人照片添加到授权用户联系人:

var photoClass = {photoBytes: Utilities.base64EncodeWebSafe(testIDPhotoBlob.getBytes()),
personFields:'photos'};
var testId = 'people/c12345678901234'
var updatePhoto = People.People.updateContactPhoto(photoClass,testId);

这将成功更新联系人照片。请注意,联系人是用户联系人,并且是带有 'people/c' 的存在。

如果我使用相同的方法更新域共享联系人:

var photoClass = {photoBytes: Utilities.base64EncodeWebSafe(testIDPhotoBlob.getBytes()),
personFields:'photos'};
var testId = 'people/d12345678901234'
var updatePhoto = People.People.updateContactPhoto(photoClass,testId);

请注意,联系人 ID 以“person/d”开头。这将返回错误:

GoogleJsonResponseException: API call to people.people.updateContactPhoto failed with error: Resource name "people/d12345678901234" is not a valid contact person resource.

域联系人确实存在为:

var testPersonSearch = People.People.searchDirectoryPeople({query:'Domain Contact Name',readMask:findFields,sources:['DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT']});

Returns:
{ people: 
   [ { organizations: [Object],
       names: [Object],
       phoneNumbers: [Object],
       emailAddresses: [Object],
       etag: '%xxxxxx/yyyyyyy',
       resourceName: 'people/d12345678901234"' } ],
  totalSize: 1 }

我了解旧 API /m8/feeds 没有正确实现此功能。

如果我对 SharedContactsAPI 使用以下代码:

var contact = SharedContactsApp.getContactById('hexadecimalValueofContact');
console.log(contact.hasProfilePicture()); 
returns false as contact is valid but no image exists....
console.log(contact.setProfilePicture(testIDPhotoBlob));
returns null

另外,通过直接使用 UrlFetchApp.fetch 等使用 REST API 会得到类似的结果,说明无法找到联系人。

【问题讨论】:

    标签: google-apps-script google-api google-people-api


    【解决方案1】:

    对于共享联系人,您需要使用Shared Contacts API

    心灵:

    共享联系人 API 仅适用于外部联系人。使用此 API 为域用户或组创建联系信息可能会导致这些用户和组的联系信息重复,这可能会导致意外行为。

    要使用 Apps 脚本实现 Shared Contacts API,您可以使用开源的 SharedContactsApp 库。该文档为您提供了如何使用它的说明和示例。

    【讨论】:

    • 我担心共享联系人 API 使用旧的 /m8/feeds 并且不起作用。
    • here。它说:“域共享联系人 API 不受这些更改的影响”
    • 您好 - ShareContactsAPI 和 /m8/feeds/ 即使在 Contacts API 停用后仍用于域共享联系人,关键是 /m8/feeds 和 SharedContactsAPI 尚未修复域的照片尽管它是 2013 年首次编写并于 2015 年更新的,但共享联系人!
    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多