【问题标题】:Rails and Omniauth - How much data from the authentication hash should I be saving?Rails 和 Omniauth - 我应该保存多少来自身份验证哈希的数据?
【发布时间】:2012-12-29 00:25:30
【问题描述】:

我目前正在使用rails 和omniauth gem 将我的应用程序与facebook、twitter 和linkedin 集成。当我处理omniauth 回调时,我只需从身份验证哈希中保存uid 和provider。大多数在线教程也只保存这些字段,但是您以后如何从 facebook/twitter/linkedin 访问用户详细信息?除了 uid/provider 之外,还应保存身份验证哈希中的哪些其他字段?

我读过的一些指南:

Github omniauth with devise

Railscast omniauth and devise

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 omniauth


    【解决方案1】:

    在 Railscast 中,在创建全功能 OmniauthCallbacksController 之前有一个示例,其中行:

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

    在屏幕上输出请求。如您所见,在这个哈希omniauth.auth 中,有很多关于经过身份验证的用户的有用信息。每次验证成功时都会收到它。在这种情况下,除了 uidprovider 之外,不需要在数据库中存储任何其他内容。

    哈希的条目可以这样访问:

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

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

    您会看到逻辑:yaml 输出的每个部分(比如说“信息”)都包含特定的属性。

    【讨论】:

    • 我希望能够随时访问用户的数据,而不仅仅是在他进行身份验证时
    • 哈希值在sign_out时刻可用。
    • 啊。好的,这就是我困惑的根源。谢谢
    • 如何访问哈希?我需要把它放到会话中吗?
    • request.env["omniauth.auth"] 在创建用户的本地帐户后为空
    【解决方案2】:

    最终保存了来自 facebook 的访问令牌,如果我需要信息,则轮询 api,然后每 2 小时自动刷新一次令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 2016-02-26
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多