【问题标题】:Custom OmniAuth Configuration Ruby on Rails自定义 OmniAuth 配置 Ruby on Rails
【发布时间】:2016-04-30 05:45:07
【问题描述】:

在此处遵循本教程。

我在查找有关我要完成的任务的任何信息时遇到问题。

我目前为我的 Rails 应用设置了自定义用户身份验证。用户在数据库中还有一个角色字符串,用于确定他们在应用程序中看到和可以做的事情。

      ROLES = %w[non-profit company person]            

    def role_symbols
    [role.to_sym]
     end

在注册表单中,用户可以输入姓名、电子邮件地址、用户名和密码。并且还必须选择他们的用户角色。

  Signup.html.erb 
               <h3>Choose Account Type                     </h3>
  <%= f.input :role, :collection => User::ROLES.map { |s| [s.humanize, s] }, required: true, label: false, input_html: { class: 'input-md' } %>

我的目标是在 twitter 和 facebook omniauth 上填写我的注册表单。当他们单击使用 twitter 或 facebook 创建帐户时,我希望用户能够选择他们的角色。当前的omniauth 配置我对如何添加自定义选择有点困惑。有没有办法通过链接 twitter 或 facebook 帐户来确保用户在创建帐户之前选择一个角色。

任何帮助都会很棒,谢谢。

【问题讨论】:

    标签: ruby-on-rails omniauth omniauth-facebook omniauth-twitter


    【解决方案1】:

    让我们看看 oauth 流程 - 在本例中,我们使用 facebook,但它可以是任何提供者。

    1. 用户点击指向/auth/facebook的登录链接。
    2. OmniAuth 重定向到身份验证对话框https://www.facebook.com/dialog/oauth...
    3. 将提示用户授予应用程序权限。他们可以选择接受或拒绝。用户被重定向回您的应用程序。
    4. 返回“回调”由您的应用程序处理。通常是/auth/callbacks/facebook。你会得到一个包含信用和用户信息的哈希。究竟如何使用它以及登录后如何重定向用户取决于您。

    如果您希望用户向您提供其他详细信息,您可以通过在登录后重定向用户来完成此操作。 但是,您应该先创建用户帐户,然后允许用户提供其他详细信息。虽然在技术上可以将凭据存储在某个地方 OAuth 本身就足够复杂,因此您不想在身份验证流程中加入一堆额外的步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2012-09-05
      • 1970-01-01
      相关资源
      最近更新 更多