ruby-on-rails – 如何在各种环境中使用和配置omniauth与yahoo,google,facebook策略?

概述我正在开发一个Rails 3.2应用程序,允许用户通过多个提供商进行身份验证… Yahoo,Google,Facebook和/或Twitter.我们正在使用omniauth,虽然我理解基本的工作流程,但我找不到一个包含文档,说明应如何配置这些特定的提供程序,以及如何设置Rails应用程序,以便我可以正确地测试/使用这些策略开发,测试和生产环境. 所以我的问题: >对于这些提供商(雅虎,谷歌,推特, 我正在开发一个Rails 3.2应用程序,允许用户通过多个提供商进行身份验证… Yahoo,Google,Facebook和/或Twitter.我们正在使用omniauth,虽然我理解基本的工作流程,但我找不到一个包含文档,说明应如何配置这些特定的提供程序,以及如何设置Rails应用程序,以便我可以正确地测试/使用这些策略开发,测试和生产环境.

所以我的问题:

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

谢谢 – wg

解决方法 至于你的第一个问题:

您需要为Facebook,Google和Twitter创建应用程序才能使用其OAuth协议.至于雅虎,我不知道.雅虎是否仍然相关?开玩笑.有关所有可用的Omniauth提供程序策略的列表,请转到here.

那么,Facebook:

https://developers.facebook.com/appsCreate 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.comCreate app. You'll be given an API Key and an API Secret.Services > Select necessary services and scopesAPIs & 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.rbRails.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',image_size: 'normal'  }  provIDer :Google_oauth2,'Google_KEY','Google_SECRET',{    image_size: 50,image_aspect_ratio: 'square'  }end

然后按照this railscast和this wiki进行 *** 作.您应该使用ENV [‘FACEBOOK_KEY’]等环境变量并在控制台中进行设置,以便您可以在运行时更改它们,以便它们不会被推入您的存储库中的某个文件中(特别是如果你有公共场合). Here’s a solution到了这个问题.

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

编辑:回答你的问题:

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

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

关于OmniAuth的好处是,一旦你掌握了基础知识,添加其他提供商就像注册应用程序,获取API密钥和秘密以及包含某个宝石一样简单.我建议先从Facebook开始,因为它是最受欢迎的服务,因此是文档最多的(或者至少在SO上有更多问题的那个).从那里,构建您的应用程序并添加其他身份验证方法.

总结

以上是内存溢出为你收集整理的ruby-on-rails – 如何在各种环境中使用和配置omniauth与yahoo,google,facebook策略?全部内容,希望文章能够帮你解决ruby-on-rails – 如何在各种环境中使用和配置omniauth与yahoo,google,facebook策略?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1289599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存