0

在此处遵循本教程。

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

我目前使用自定义用户身份验证设置了我的 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 帐户来确保用户在创建帐户之前选择一个角色。

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

4

1 回答 1

0

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

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

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

于 2016-04-30T19:08:01.840 回答