如何读取Google People API返回的响应对象[已更新]
核心原因
你现在拿到的googleapiclient.discovery.Resource对象根本不是接口返回的结果,只是本地构造好的一个请求实例而已。Google的Python版API客户端(google-api-python-client)所有接口调用都遵循同一个规则:调用资源操作方法(比如这里的get())只是组装请求参数,不会真的发请求,必须手动调用execute()方法,才会真正发起HTTP请求,返回解析好的结构化响应数据。
可用示例代码
# 1. 构造获取联系人的请求 get_req = service.people().get( resourceName='people/c63810788897573286', personFields='names' ) # 2. 执行请求拿到实际响应数据 profile = get_req.execute() # 3. 提取并打印姓名 name_list = profile.get('names', []) if name_list: # 接口返回的names数组里第一个默认是联系人的主显示名称 print(name_list[0].get('displayName', '无有效姓名')) else: print('当前联系人未配置姓名字段')
注意事项
- 这个
execute()调用规则是Google Python客户端的通用逻辑,不管是People API、Calendar API还是Drive API,所有用这个客户端构造的请求都要这么用,没有例外。 - 如果你需要同时获取联系人的其他信息(比如手机号、邮箱、头像地址),直接给
personFields传逗号分隔的字段值就行,比如personFields='names,phoneNumbers,emailAddresses,photos',返回的响应字典里会带上对应字段的内容。 - 客户端已经自动帮你把接口返回的JSON转成了Python原生的字典、列表结构,不需要自己做JSON反序列化,直接按键取值就可以。
内容的提问来源于stack exchange,提问作者tom
相关产品推荐
相关产品推荐

