Tag: omn​​iauth

Devise + Omniauth Facebook重定向到注册

我已经按照https://github.com/plataformatec/devise/wiki/OmniAuth:-概述的指南 第一轮它validation了我,签了我,并把我救了db。 我清除了浏览器历史记录并测试了其他用户。 它需要新用户登录Facebook页面,登录后会自动将其重定向到 http://localhost:3000/users/sign_up#_=_ 并且不签名或保存到DB。 有任何想法吗? 路线 get “static/home” devise_for :users, :controllers => { :omniauth_callbacks => “users/omniauth_callbacks” } resources :users root ‘static#home’ User.rb class User [:facebook] def self.from_omniauth(auth) where(auth.slice(:provider, :uid)).first_or_create do |user| user.email = auth.info.email user.password = Devise.friendly_token[0,20] user.name = auth.info.name # assuming the user model has a name #user.image = auth.info.image # assuming […]

Rails – 避免OmniAuth和共享计算机风险的策略

在测试Omniauth并关注流行的Ryan Bates的video时,我认为存在一个重大的安全漏洞。 这是一个例子 我有两个用户:Aurelien和John 约翰在早上登录到Twitter但忘记退出。 然后他继续我的应用程序并通过http://myapplication.com/auth/twitter连接到Twitter服务。 他被自动分配到Twitter身份validation,因为Twitter记得约翰已登录。约翰去上class。 与此同时,他的兄弟Aurelien使用相同的计算机并使用我的应用程序。 他决定发布我的应用程序的推文并继续访问http://myapplication.com/auth/twitter ,通过OmniAuth登录他的Twitter帐户。 多么惊喜! 他不需要登录,但是当重定向到回调URL时,他发现他当前以John身份登录! 现在我想相信大多数用户不共享他们的电脑/桌面/电话,但我确信这是一个经常出现的问题。 您可以遵循什么策略或逻辑来防止这种情况发生? 例如,如何确保当需要与myapplication不同的用户登录Twitter而不是使用之前打开的Twitter会话时? 欢迎举例!

Facebook登录OmniAuth错误更改被拒绝

我能够使用Omniauth http://railscasts.com/episodes/241-simple-omniauth我的Rails应用程序设置我的Facebook和Twitter登录。 我的登录工作在我的计算机上完美运行(我在生产和开发方面进行了测试),直到有人在尝试使用Facebook登录时通过电子邮件向我发送此问题时才发现问题: The change you wanted was rejected. Maybe you tried to change something you didn’t have access to. 事实certificate,在我的开发计算机上,没有其他人可以通过FB或Twitter登录或创建帐户。 从其他解决方案中,我删除了protect_from_forgery并将skip_before_filter :verify_authenticity_token添加到我的application_controller.rb,但我仍然遇到同样的问题。 我正在Heroku上托管我的应用程序。 有谁知道发生了什么? 如果您需要任何其他信息,请告诉我。

为什么我在前2位用户之后收到“此授权码已被使用”?

我正在使用Omniauth-Facebook来创建和validation用户。 它适用于两个第一个用户,但第三个用户失败。 我仍然可以进行身份​​validation; 这是CREATE过程失败了。 如果没有解决方案,这似乎是一个常见问题。 error.log中: facebook) Callback phase initiated. (facebook) Authentication failure! invalid_credentials: OAuth2::Error, : {“error”:{“message”:”This authorization code has been used.”,”type”:”OAuthException”,”code”:100}} onmiauth.rb: Rails.application.config.middleware.use OmniAuth::Builder do provider :developer unless Rails.env.production? provider :facebook, ‘xxxxxxx’, ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxx’, :scope => ’email,user_birthday,user_hometown,user_location’, :display => ‘popup’ end SessionsController: class SessionsController “Signed in!” end def destroy session[:player_id] = nil redirect_to root_url, :notice […]

omn​​iauth with rails:获取facebook用户的信息

在我的身份validation过程的回调中: auth_hash = request.env[‘omniauth.auth’] 然后,我正在提取用户ID,但是有可能同时获取用户的姓名和电子邮件地址吗?

设计Oauth Twitter:OAuth ::未经授权的禁止403

我正在尝试使用Devise实现Oauth Twitter。 我在twitter上创建了应用程序 我已将回调url设置为: http:// localhost:3000 我已将此添加到config \ initializers \ devise.rb config.omniauth :twitter, “key”, “key secret” 使用Twitter登录会自动出现在此路线:/ users / sign_up /但点击它时我收到此错误 密钥和密钥是正确的 我也尝试删除和创建新的应用程序。 我无法修复它 非常感谢帮助 这里说它需要设置https。 所以我按照这个来设置它。 但得到同样的错误

未定义的方法’更改’为:更新时间戳值时的Fixnum

我正在项目中使用Google的OAuth2 API,使用Omniauth可以轻松创建初始帐户,但是为了使用API​​我需要刷新access_token,因为它们只有一个小时有效,但我是刷新令牌时更新expires_at值时出现问题。 这是我用于请求令牌刷新的代码: require ‘oauth2’ class Identity ‘https://accounts.google.com’, :authorize_url => “/o/oauth2/auth”, :token_url => “/o/oauth2/token” } response = OAuth2::AccessToken.from_hash(client, :refresh_token => self.refresh_token).refresh! self.update_attribute(:access_token, response.token) self.update_attribute(:expires_at, Time.at(response.expires_at)) end end end 我得到一个undefined method ‘change’ for 1359936923:Fixnum最终update_attribute行上的undefined method ‘change’ for 1359936923:Fixnum错误:expires_at(我从上面的行中拆分它以尝试找出问题)。 我已经尝试了上面的update_attribute调用,还有一个简单的self.expires_at = response.expires_at ,有和没有Time.at转换,但所有组合都会导致相同的错误。 :expires_at属性是Timestamp数据类型。 我已经检查了response变量,它包含正确的时间戳,据我所知: — !ruby/object:OAuth2::AccessToken … expires_in: 3600 expires_at: 1360019618 options: :mode: :header :header_format: Bearer […]

如何使用Minitest测试OmniAuth的SessionsController

我正在尝试使用Minitest测试我的Facebook登录代码,但它并不顺利。 当我尝试get :auth, ‘provider’ => ‘facebook’在测试中,测试返回undefined method ‘[]’ for nil:NilClass ,如果我尝试get :new它传递,但auth不被调用。 如何使用omniauth成功重定向到auth? 这是我的源代码。 测试/控制器/ sessions_controller_test.rb require ‘test_helper’ class SessionsControllerTest ‘facebook’, ‘uid’ => ‘123451234512345’, ‘info’ => {’email’ => ‘testuser@testmail.com’, ‘name’ => ‘test’, ‘image’ => ”} }) request.env[‘omniauth.env’] = OmniAuth.config.mock_auth[:facebook] get :auth end end 应用程序/控制器/ sessions_controller.rb class SessionsController < ApplicationController def auth if(env['omniauth.params']['type'] == 'signin') if […]

Unicorn和omniauth-facebook – 未初始化的恒定OmniAuth

所以我想让omniauth-facebook在我的生产环境中工作。 它使用POW在我的机器上本地工作正常。 我的prv env是带有nginx / unicorn的ubuntu,代码是Rails 3.2.13,独角兽的错误是: E, [2013-05-20T15:51:13.900829 #8737] ERROR — : uninitialized constant OmniAuth (NameError) /home/web/apps/****/releases/20130520041958/config/initializers/omniauth.rb:1:in `’ 所以从我能找到的,我尝试在configure块上面添加require’omniauth / facebook’到我的production.rb文件,现在我得到: /home/web/apps/****/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require’: cannot load such file — omniauth/facebook (LoadError) gemfile看起来像这样: source ‘https://rubygems.org’ gem ‘rails’, ‘3.2.13’ gem ‘pg’ gem ‘bcrypt-ruby’, ‘3.0.1’ gem ‘jquery-rails’, ‘2.2.1’ gem ‘omniauth-facebook’ gem ‘simple_form’ 初始化文件看起来像这样: OmniAuth.config.logger = Rails.logger Rails.application.config.middleware.use OmniAuth::Builder […]

Rails 5设计omniauth-facebook错误:抱歉,出了点问题

我正在按照Devise的官方指南从顶部到本节 。 我的CALLBACK_URL是http://localhost:3000/users/auth/facebook/callback ,我认为这可能是问题,但我不确定。 当我点击登录Facebook时,我遇到了这个错误: 抱歉,出了一些问题。 在这个链接上: https://www.facebook.com/v2.6/dialog/oauth?client_id=193217371133539&redirect_uri=https%3A%2F%2Flocalhost%3A3000%2Fusers%2Fauth%2Ffacebook%2Fcallback&response_type=code&scope=user%2Cpublic_repo&state=3913c12e0e4ce8b422732c9159c0fb1fb7351d100487849d Rails版本:Rails 5.0.0.1 Ruby版本(使用rbenv):ruby 2.3.1p112(2016-04-26修订版54768)[x86_64-darwin16]