rails谷歌api客户端联系api



我想通过google联系人API访问用户的联系人列表。我已经设法获得了令牌和刷新令牌,现在我正尝试在rails服务器上使用它。google-api-client宝石似乎是一条路,但我找不到要使用哪个discovered_api。Greg Baugues提供了一个很好的教程来让gmail API工作。一般的请求看起来像

client = Google::APIClient.new
client.authorization.access_token = user_token
service = client.discovered_api('gmail')
result = client.execute(
  :api_method => service.users.labels.list,
  :parameters => {'userId' => 'me'},
  :headers => {'Content-Type' => 'application/json'})
pp JSON.parse(result.body)

但我找不到如何查询联系人。运行

client.discovered_apis.each do |gapi|
  puts "#{gapi.title} t #{gapi.id} t #{gapi.preferred} n"
end

(从这里)现在显示了与联系人相关的API,我想知道这是否在gem的alpha版本中实现。。。

如@abraham所述,发现API不支持Google联系人API。以下是我如何使用宝石google_contacts_apioauth2(感谢Rael Gugelmin Cunha将它们指向我)从访问令牌在ruby中完成的操作:

client = OAuth2::Client.new(client_id, client_secret, site: url)
token = OAuth2::AccessToken.new(client, access_token)
google_contacts_user = GoogleContactsApi::User.new(token)
contacts = google_contacts_user.contacts

可能有一些更优雅的方法可以做到这一点,但这很有效:)

Google联系人API基于Google较旧的GData API标准,不受发现API的支持。有一个相当广泛的指南为普通Ruby和一个辅助宝石。检索所有联系人并不提供Ruby示例,但Python示例应该很容易翻译。

def PrintAllContacts(gd_client):
  feed = gd_client.GetContacts()
  for i, entry in enumerate(feed.entry):
    print 'n%s %s' % (i+1, entry.name.full_name.text)
    if entry.content:
      print '    %s' % (entry.content.text)
    # Display the primary email address for the contact.
    for email in entry.email:
      if email.primary and email.primary == 'true':
        print '    %s' % (email.address)

相关内容

  • 没有找到相关文章

最新更新