2010-12-01 35 views
6

我正在使用设计用omniauth,authid进行登录。当用户登录我得到如何在Ruby中使用OpenID访问Google联系人

user_info: 
name: Riccardo Tacconi 
last_name: Tacconi 
email: [email protected] 
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获取谷歌联系人。我只需要使用这种方法:

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

但我需要一个令牌。我只有uid。你有一个想法如何获得访问令牌?没有任何有关访问谷歌的文档。

+0

重复的问题? [如何在Ruby中使用OpenID访问Google通讯录](http://stackoverflow.com/q/4337259/128421) – 2010-12-14 05:21:07

回答

3

这个答案相当复杂。 Pelle的便携式联系人解析器依赖于他的oauth宝石。您可能能够从任何omniauth/authid给出的方式手动构造token object(密钥/密钥对),但它可能是一些非常混乱的代码。

官方支持的Ruby的OAuth客户端是Signet。但是,Pelle的解析器只能用于他的OAuth实现,所以这里的故事大致相同。你也许能够从他的客户端撷取解析代码,并将它嫁给Signet,但是和以前一样,如果你沿着这条路线走下去,那么你的工作就不再适合你了。

今天最容易做的事可能是使用oauth gem并接受Pelle强加给你的依赖关系树。

编辑:以后一段时间,google-api-client宝石可能会为您提供您在这一点上需要的东西。在很多情况下,支持OAuth 1和2,并提供对certain Google APIs的基于发现的访问。不幸的是,联系人API目前不在list上,但客户端仍然能够在不使用发现的情况下向API发出请求,尽管在这种情况下它有点更加手动(因为您需要传递它将授权的HTTP请求以及您基本上是你自己解析的)。