【问题标题】:How access Google Contacts using OpenID in Ruby如何在 Ruby 中使用 OpenID 访问 Google 通讯录
【发布时间】:2011-05-18 12:15:49
【问题描述】:

我正在使用 devise 通过omniauth、authid 登录。当用户登录时,我得到 ​​p>

user_info: 
name: Riccardo Tacconi
last_name: Tacconi
email: email@gmail.com
first_name: Riccardo
uid: https://www.google.com/accounts/o8/id?id=xxxxxxxxx
provider: google_apps

我找到了一个插件:http://stakeventures.com/articles/2009/10/06/portable-contacts-in-ruby 来获取 Google 通讯录。我只需要使用这个方法:

@client = PortableContacts::Client.new "http://www-opensocial.googleusercontent.com/api/people", @access_token

但我需要一个令牌。我只有uid。您知道如何获取访问令牌吗?没有任何关于访问 google 的文档。

【问题讨论】:

标签: ruby rubygems oauth openid


【解决方案1】:

这个问题的答案相当复杂。 Pelle 的便携式联系人解析器依赖于他的oauth gem。您也许可以根据omniauth/authid 为您提供的任何内容手动构造token object(密钥/秘密对),但这可能是一些非常混乱的代码。

官方支持的 Ruby OAuth 客户端是Signet。但是,Pelle 的解析器只设计用于他的 OAuth 实现,所以这里的故事也是一样的。你也许可以从他的客户那里取出解析代码并将其嫁给 Signet,但和以前一样,如果你走这条路,你的工作就完成了。

今天要做的最简单的事情可能就是使用oauth gem 并接受 Pelle 强加给您的依赖关系树。

编辑:稍后,google-api-client gem 可能会为您提供此时所需的内容。支持 OAuth 1 和 2,并在许多情况下提供对 certain Google APIs 的基于发现的访问。不幸的是,Contacts API 当前不在list 上,但客户端仍然能够在不使用发现的情况下向 API 发出请求,尽管在这种情况下它需要更多手动操作(因为您需要将 HTTP 请求传递给它将授权并且您基本上是靠自己进行解析)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2019-01-26
    • 2011-09-02
    • 2011-04-08
    • 2010-11-03
    相关资源
    最近更新 更多