2010-12-01 39 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請求以及您基本上是你自己解析的)。