gpt4 book ai didi

ruby-on-rails - yahoo、google、facebook策略在各种环境下如何使用和配置omniauth?

转载 作者:行者123 更新时间:2023-12-05 00:35:05 24 4
gpt4 key购买 nike

我正在开发一个 Rails 3.2 应用程序,它允许用户向多个提供商进行身份验证......雅虎、谷歌、Facebook 和/或 Twitter。我们正在使用omniauth,虽然我了解基本工作流程,但我找不到包含应如何配置每个特定提供程序以及应如何设置Rails应用程序的包容性文档,以便我可以正确测试/使用这些策略开发、测试和生产环境。

所以我的问题:

  • 对于这些供应商(雅虎、谷歌、推特、 Facebook )中的每一个,需要哪些步骤来为omniauth 单独配置每个供应商,以便它们可以在开发、测试和生产环境中使用?
  • 配置 Rails 应用程序以在我运行的任何环境中正确使用这些提供程序的最佳/推荐方法是什么?

  • 谢谢-wg

    最佳答案

    至于你的第一个问题:

    您需要为 Facebook、Google 和 Twitter 创建应用程序以允许使用它们的 OAuth 协议(protocol)。至于雅虎,我不知道。雅虎还有用吗?只是在开玩笑。有关所有可用 Omniauth 提供者策略的列表,请访问 here .

    所以, Facebook :

    https://developers.facebook.com/apps
    Create app. You'll be given an API Key and an API Secret.
    Settings > Basic > Website > Site URL:
    your_website_callback_url for production

    推特:
    https://apps.twitter.com/
    Create app. You'll be given an API Key and an API Secret.
    Settings > Callback URL:
    your_website_callback_url for production

    谷歌:
    https://console.developers.google.com
    Create app. You'll be given an API Key and an API Secret.
    Services > Select necessary services and scopes
    APIs & auth > Credentials > Create New Client ID:
    http://localhost:3000/ for development/testing
    your_website_callback_url for production

    然后,您的 Gemfile:
    gem 'omniauth-facebook'
    gem 'omniauth-twitter'
    gem 'omniauth-google-oauth2'

    创建一个文件来设置您的策略。约定将其命名为omniauth.rb。每个提供商都有许多不同的选项,您必须调查它们是什么:
    # config/initializers/omniauth.rb
    Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, 'FACEBOOK_KEY', 'FACEBOOK_SECRET', {
    secure_image_url: 'true',
    image_size: 'square'
    }

    provider :twitter, 'TWITTER_KEY', 'TWITTER_SECRET', {
    secure_image_url: 'true',
    image_size: 'normal'
    }

    provider :google_oauth2, 'GOOGLE_KEY', 'GOOGLE_SECRET', {
    image_size: 50,
    image_aspect_ratio: 'square'
    }
    end

    然后关注 this railscastthis wiki .您应该使用像 ENV['FACEBOOK_KEY'] 这样的环境变量并在控制台中设置它们,以便您可以在运行时更改它们,这样它们就不会在某个文件中被推送到您的存储库中(特别是如果您有一个公共(public)文件)。 Here's a solution到这个问题。

    最后,您应该搜索每个提供商的 gem wiki 以获取更多信息。例如, facebook's omniauth gem readme提供了当用户通过 Facebook 进行身份验证时 Facebook 返回的身份验证哈希的示例。然后,您可以使用此信息来自定义您的用户模型(根据您的需要更新他的全名或他的图像)。它还提到了如何请求额外的权限来访问不公开的用户数据。

    编辑:回答你的问题:

    就像我说的,我真的很喜欢 Railscasts,我看了两集,其中集成了 Devise 和 OmniAuth。在这些剧集中, omniauth-openid gem 用于向 Google 进行身份验证。它的缺点是,由于您没有注册应用程序,因此无法自定义身份验证提示。使用 Facebook 和 Twitter,您可以选择名称、输入描述并上传应用程序的 Logo 。您还可以在您的网站上设置指向“隐私”和“使用条款”页面的链接。当用户尝试使用这些服务登录时,所有这些小细节都会出现在用户面前,正如您可以想象的那样,它们会影响您的用户转化率。

    omniauth-openid您无法自定义提示并且您获得的信息是有限的(只有与帐户关联的电子邮件和名称)。如果这就是你所需要的,那么你就准备好了。但是,如果您想获取用户的图像,或者访问只能从用户的 Google+ 个人资料中获得的其他私有(private)信息,那么最好使用 omniauth-google2。 .

    OmniAuth 的好处在于,一旦您的基础工作正常,添加其他提供程序就像注册应用程序、获取 API key 和 secret 以及包含某个 gem 一样简单。我建议首先从 Facebook 开始,因为它是最受欢迎的服务,因此是文档最多的服务(或者至少是在 SO 上有更多问题的服务)。从那里,构建您的应用程序并添加其他身份验证方法。

    关于ruby-on-rails - yahoo、google、facebook策略在各种环境下如何使用和配置omniauth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9853119/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com