Google的People API-更新联系人(Python)的问题

时间:2019-01-10 01:09:53

标签: google-people

我具有我要更新的人员的resourceName和etag,但是我不理解实际执行更新的文档。

我看过API文档,感觉好像我在正确地构造所有东西。但是,我不断收到两种错误400的响应:

1)

  

https://people.googleapis.com/v1/people/c1596007341306697743:updateContact?updatePersonFields=%7B%27emailAddresses%27%3A+%5B%7B%27value%27%3A+%27hello%40gmail.com%27% 7D%5D%7D&alt = json   返回“在“ update_person_fields”处的无效值”   (type.googleapis.com/google.protobuf.FieldMask),字段   'update_person_fields',无效的字段掩码'{'emailAddresses':   [{'value':'hello@gmail.com'}]}'。映射键应表示为   [“ some_key”]。“>

2)

  

https://people.googleapis.com/v1/people/c1596007341306697743:updateContact?updatePersonFields=%7B%27emailAddresses%27%3A+%7B%27value%27%3A+%27hello%40gmail.com%27%7D% 7D&alt = json   返回“无效的updatePersonFields掩码路径:” {'email_addresses':   {'value':'hello@gmail.com'}}“。有效路径记录在:   https://developers.google.com/people/api/rest/v1/people/updateContact。“>

第一次发生在将方括号([])留在updatePersonFields参数中时,第二次发生时将其删除。

我正在竭尽全力在Python中完全实现此目标,并且成功地完成了查看和创建联系人的任务。似乎该更新调用与其他调用有所不同。任何和所有投入都将受到欢迎和赞赏。

    profileCode = "people/blahblahblah" 
    accessToken = "%Eblahblahblah=" 

    update = API.people().updateContact(
        resourceName=profileCode,
        body={"resourceName":profileCode, "etag":accessToken},
        updatePersonFields={"emailAddresses":[{"value":"hello@gmail.com"}]}
        ).execute()

1 个答案:

答案 0 :(得分:0)

请查看文档https://developers.google.com/people/v1/write-people#update-an-existing-contact中的示例。

updatePersonFields只是用逗号分隔的应更新字段列表,例如emailAddresses,names。您正在尝试在updatePersonFields参数中指定要更新的联系人,而该联系人应在HTTP帖子正文中指定,而不是updatePersonFields参数。