如何通过google-api-ruby-client的People API传递OAuth令牌?
Google People API Ruby 端 OAuth 令牌调用示例
- 首先确保OAuth授权流程中已向用户申请
https://www.googleapis.com/auth/contacts.readonly权限,这是读取联系人数据的必要前提 - 已安装官方Ruby SDK:
gem install google-api-ruby-client,或在Gemfile中添加gem 'google-api-ruby-client'后执行bundle install
以下是获取当前授权用户所有联系人的邮箱地址和电话号码的完整示例:
require "google/apis/people_v1" # 初始化People API V1服务实例 people_service = Google::Apis::PeopleV1::PeopleServiceService.new # 直接传入你从OAuth流程拿到的access_token即可 people_service.authorization = "你的OAuth访问令牌" # 获取当前用户的联系人列表,指定只返回邮箱和手机号字段,减少不必要的请求开销 response = people_service.list_person_connections( "people/me", person_fields: "emailAddresses,phoneNumbers", page_size: 1000 # 可根据需要调整单次返回的最大条数,最高支持1000 ) # 遍历联系人提取所需信息 response.connections.each do |contact| # 提取所有邮箱地址 emails = contact.email_addresses&.map { |e| e.value } || [] # 提取所有电话号码 phones = contact.phone_numbers&.map { |p| p.value } || [] puts "联系人信息:" puts "邮箱:#{emails.join(',')}" puts "手机号:#{phones.join(',')}" puts "---" end
如果你确实需要调用get_people接口(适用场景为你已经提前拿到了需要查询的联系人的resource_name列表),可以参考以下示例:
# resource_names = ["people/c1234567890", "people/c9876543210"] # people_response = people_service.get_people( # resource_names: resource_names, # person_fields: "emailAddresses,phoneNumbers" # ) # # people_response.people.each do |person| # # 同上逻辑提取邮箱和手机号即可 # end
如果返回结果有分页,可通过返回的
next_page_token参数传入请求的page_token字段,循环拉取全量联系人数据。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

