Я использую Google People API и могу получить данные, определенные пользователем, Person / UserDefined, см.
https://developers.google.com/people/api/rest/v1/people#userdefined https://developers.google.com/resources/api-libraries/documentation/people/v1/java/latest/
Однако я не могуобновить данные, определенные пользователем.Вот код
(def update-person-fields "addresses,biographies,birthdays,emailAddresses,events,genders,imClients,interests,locales,names,nicknames,occupations,organizations,phoneNumbers,relations,residences,urls,userDefined")
(defn initialize-people-service
[user-id]
(when-let [google-token-response (tk/get-access-token user-id GOOGLE)]
(let [credential (google-credential google-token-response)]
(-> (PeopleService$Builder. (GoogleNetHttpTransport/newTrustedTransport)
(JacksonFactory/getDefaultInstance) credential)
(.setApplicationName "app")
.build))))
(defn update-google-contact
[user-id wingman-contact-id google-contact]
(try
(lg/log! :info (str "update a google contact for " user-id))
(let [people-service (initialize-people-service user-id)
resource-name (.getResourceName google-contact)
[google-contact-id etag] (get-g-contact-id-and-etag resource-name people-service)]
(.setEtag google-contact etag)
(-> people-service
.people
(.updateContact (.getResourceName google-contact) google-contact)
(.setUpdatePersonFields update-person-fields)
.execute
(update-contact-callback))
)
(catch Exception e
(lg/log! :error (.getMessage e))
false)))
См. https://developers.google.com/people/api/rest/v1/people/updateContact
Я вижу, что UserDefined отсутствует в updatePersonFields.
Пожалуйста, дайте мне знать, если Google People API поддерживает обновление Person / UserDefined или нет
Здесь вводится функция обновления, объект Google person
#object[com.google.api.services.people.v1.model.Person 0x1bc30f20 {addresses=[{city=, country=, formattedValue=Hoang Hoa Tham 123, poBox=, postalCode=, region=, streetAddress=Hoang Hoa Tham, type=home}],
birthdays=[{date={day=2, month=1, year=2011}}],
emailAddresses=[{displayName=WORK, type=WORK, value=emailwork@gmail.com123}, {displayName=HOME, type=HOME, value=emailhome@yahoo.com123}],
imClients=[{protocol=SKYPE, type=SKYPE, username=skype@user.com}, {protocol=AIM, type=AIM, username=iam@user.com}],
names=[{displayName=Test02 Te, familyName=BBB, givenName=Test02, honorificPrefix=, honorificSuffix=, middleName=Te}],
nicknames=[{value=}],
organizations=[{department=, name=ABC VietNam 123, startDate={day=6, month=5, year=2018}, symbol=, title=SA 123}],
phoneNumbers=[{type=Home, value=123 456 78123},{type=Work, value=333 3333 123}],
relations=[{person=Hoang Tran123, type=SPOUSE}, {person=Huong Pham123, type=MOTHER}],
resourceName=people/c2998574137780944562,
urls=[{type=profile, value=http://profile.com666 }, {type=blog,value=http://blog.com }],
userDefined=[{key=FACEBOOK, value=http://facebook.com123 }, {key=TWITTER, value=http://facebook.com } {key=customCCCCCC, value=dddd}]}]
Я могу создать контакт Google с данными, определенными пользователем
g-userdefined (conj [] (doto
(com.google.api.services.people.v1.model.UserDefined.)
(.setKey "Face Book")
(.setValue "user@facebook")))
g-userdefined-list (java.util.ArrayList. g-userdefined)
google-person (doto (com.google.api.services.people.v1.model.Person.)
(.setUserDefined g-userdefined-list)
Вот мой метод создания
(defn create-contact
[user-id contact-id google-person]
(try
(lg/log! :info (str "Create google-person for " user-id))
(.setResourceName google-person nil)
(let [people-service (initialize-people-service user-id)]
(-> people-service
.people
(.createContact google-person)
.execute
(create-contact-callback user-id contact-id)))
(catch Exception e
(lg/log! :error (.getMessage e))
false)))