2012-12-29 114 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。

相关问题