2012-12-29 42 views
3

我目前使用rails和omniauth gem將我的應用程序與facebook,twitter和linkedin集成在一起。當我處理一個omniauth回調時,我簡單地從認證哈希中保存uid和提供者。大多數在線教程只保存這些字段,但您將如何在稍後訪問facebook/twitter/linkedin中的用戶詳細信息?除了uid/provider之外,還應該保存認證哈希的其他字段嗎?Rails和Omniauth - 我應該保存多少驗證散列數據?

一些導我已讀:

Github omniauth with devise

Railscast omniauth and devise

回答

3

在Railscast有創建全功能OmniauthCallbacksController,其中前行的一個示例:

raise request.env["omniauth.auth"].to_yaml 

輸出屏幕上的請求。正如你所看到的,在這個散列中,omniauth.auth有很多關於認證用戶的有用信息。每次身份驗證正常時都會收到它。在這種情況下,除了uidprovider之外,不需要在數據庫中存儲任何其他內容。

散列的條目都可以訪問這樣的:

(request.env["omniauth.auth"]).info.nickname 

(request.env["omniauth.auth"]).uid 

你看邏輯:YAML輸出的每個部分(讓我們說'信息')包含特定屬性。

+0

嗯,我希望能夠隨時訪問用戶的數據,而不只是當他認證 –

+0

散列是可用的,直到sign_out時刻。 –

+0

啊。好的,這是我的困惑的來源。謝謝 –

0

結束了從Facebook上保存訪問令牌,如果我需要信息,然後自動刷新令牌每2小時輪詢api。

相關問題