Google People API не обновляет Person / UserDefined - PullRequest
0 голосов
/ 09 мая 2018

Я использую 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)))

1 Ответ

0 голосов
/ 09 мая 2018

Мне удалось успешно обновить поле userDefined с помощью API explorer . Похоже, список полей в документации необходимо обновить.

Для выяснения проблем в вашем коде, пожалуйста, добавьте выдаваемую ошибку.

...