标签: omniauth

Rails 4,Devise,Omniauth(有多个提供商)

我花了好几天时间在设计和omniauth上观看RailsCasts,然后通过相关教程来设置使用这些gem的身份验证系统.我认为RailsCasts已经过时了,试图用其他教程修补差距会产生各种各样的问题.

请任何人都可以建议我可以用作实施该系统的基础的当前教程.我有单独的用户和身份验证模型(用户有许多身份验证).

我真的很喜欢在rails 4上使用设计和omniauth(使用CanCan的能力),但是在尝试找到基本设置(使用psql作为数据库)时,我正在撕裂我的头发.

ruby-on-rails devise omniauth

22
推荐指数
1
解决办法
1万
查看次数

Rails设计OmniAuth Facebook从iOS登录

我一直在寻找这个问题的可靠解决方案,并遇到了这个问题,这与我的困境相匹配,但并不完全如此.

目前我的iPhone应用程序通过Basic Auth使用我的Rails API进行身份验证.它只是你简单的,普通的设计auth包.然后我按照说明设置omniauth-facebook for devise并在浏览器端工作.

我无法弄清楚如何做的部分是如何将在iPhone端收到的令牌(通过Facebook iOS SDK)发送到服务器.我希望服务器检查用户表以查看该facebook用户是否已注册,如果他没有,则为他创建一个帐户.然后,我在想服务器会生成一个随机密码并将其发送回客户端设备,以便我可以保持相同的基本身份验证策略.这是实现Web应用程序和iPhone应用程序单点登录的正确方法吗?如何修改服务器端软件包以支持通过手机发送的令牌进行身份验证?

authentication ruby-on-rails devise ios omniauth

21
推荐指数
1
解决办法
3409
查看次数

未定义的方法`session_path'

我正在使用Rails + Devise + OmniAuth + Google OAuth2.

我的用户模型(user.rb)包含:

devise :registerable, :omniauthable, :omniauth_providers => [:google_oauth2]
Run Code Online (Sandbox Code Playgroud)

我的routes.rb看起来像:

Rails.application.routes.draw do
  devise_for :users, controllers: { omniauth_callbacks: 'omniauth_callbacks' }
  devise_scope :user do
      get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
      post 'sign_in', :to => 'devise/session#create', :as => :user_session
      get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
  end

  get 'services', to: 'static_pages#services'
  get 'my_account', to: 'my_account#index'
  get 'invite', to: 'invite#show'
  get 'invite/:id', to: 'invite#show'

  root 'static_pages#home'
end
Run Code Online (Sandbox Code Playgroud)

当我去/ sign_in时,我得到一个例外:

undefined method `session_path' for #<#<Class:0x007f9b7173af28>:0x007f9b713d8da8>
Run Code Online (Sandbox Code Playgroud)

在: …

ruby ruby-on-rails devise omniauth

21
推荐指数
2
解决办法
1万
查看次数

使用设计设置多个提供者:omniauthable

我刚刚得到"Devise 1.2支持与OmniAuth教程的集成",但是我想设置多个提供者来引用同一个用户.我正在寻找一些好的示例代码来查看.

我也不能肯定"多供应商"是可能的默认"色器件:omniauthable"的实施,我想达到"一个用户的许多供应商"的效果,如由Ryan贝茨描述235 omn​​iauth部分-1 ,236 -omniauth-part-2但是我想问一下,如果你已经知道一些例子,你认为是否可以采用更干净的方式,更少被黑客攻击的混合模型.

在此先感谢luca

authentication ruby-on-rails oauth devise omniauth

20
推荐指数
1
解决办法
8554
查看次数

Heroku上的OpenSSL :: SSL :: SSLError

我正在尝试通过Facebook或Twitter对用户进行身份验证,让他们填写他们的信息,然后单击"保存"(从而创建用户记录).我在最后一步得到一个OpenSSL错误 - 点击保存后.这发生在Devise RegistrationsController #create方法中.

所以我在我的Rails应用程序中收到此错误,在Heroku上托管:

2012-07-28T18:25:13+00:00 app[web.1]: OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)
Run Code Online (Sandbox Code Playgroud)

我见过很多解决方案,但都没有.以下是我尝试过的一些事情:

1)安装certified宝石

2)将Heroku宝石升级到v2.30,再次推动

3)这个:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, TWITTER_KEY, TWITTER_SECRET, {:client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
  provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:scope => "publish_actions,user_location,email", :client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
end
Run Code Online (Sandbox Code Playgroud)

似乎有一个问题可能是这个证书文件实际上并不存在 - 我已经在几个地方看到了它,而且看起来这是Heroku的ca_cert文件的默认路径,但我可能是错的.

奇怪的是,这是我通过FB/Twitter进行身份验证之后发生的,并且我正在尝试创建用户的帐户.为什么会这样,我该如何解决/调试呢?真诚的困惑.

更新:我将此行添加到Omniauth初始化程序,现在它"正常".因此,我已经诊断出问题出在Omniauth上.但是,我还想进行SSL验证......这显然会留下安全漏洞.

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

openssl ruby-on-rails heroku omniauth

20
推荐指数
2
解决办法
2万
查看次数

哪些Ruby宝石支持Facebook API?

我有一个使用Facebook API的rails应用程序.我已经看到几种不同的Ruby宝石可以与Facebook集成,但它们看起来过时了.

自己写低级别电话最好吗?有没有像样的当前宝石?

最近有没有改变这些宝石?


我正在开始一个新项目 - 我应该在2012年9月使用哪种宝石?

ruby facebook ruby-on-rails facebook-graph-api omniauth

19
推荐指数
3
解决办法
1万
查看次数

Devise和OmniAuth记住OAuth

所以,我只是通过https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview使用Rails 3,Devise和OmniAuth进行设置.

我通过Facebook成功验证了用户身份,但尽管被标记为以下内容,但它们并非"可记忆":

devise [...]: rememberable, :omniauthable
Run Code Online (Sandbox Code Playgroud)

我试着打电话:

@the_user.remember_me!
Run Code Online (Sandbox Code Playgroud)

......无济于事 没有存储/设置cookie,这意味着用户不会跨会话持久存在.

有没有人设法通过cookie记住来自FB的用户?在我看来,这应该是自动发生的.

感谢您提出的任何想法或反馈.

facebook devise omniauth ruby-on-rails-3

18
推荐指数
3
解决办法
3845
查看次数

在devise 2.0上跳过omniauth-twitter的电子邮件验证

我正在使用devise 2.0和gem omn​​iauth-twitter

问题是twitter没有响应发送电子邮件,因此我的应用程序的模型用户验证了有一封电子邮件,我在回调中收到以下错误:

Email can't be blank
Run Code Online (Sandbox Code Playgroud)

我在我的user.rb模型中有这个:

#config omniauth twitter
def self.find_for_twitter_oauth(access_token, signed_in_resource = nil)
    data = access_token.extra.raw_info
    if user = User.where(:username => data.screen_name).first
        user
    else
        User.create!(:username => data.screen_name, :password => Devise.friendly_token)
    end
end
Run Code Online (Sandbox Code Playgroud)

我在omn​​iauth_callbacks_controller.rb中有这个

  def twitter
    @user = User.find_for_twitter_oauth(request.env["omniauth.auth"], current_user)
    if @user.persisted?
      flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Twitter"
      sign_in_and_redirect @user, :event => :authentication
    else
      # http://stackoverflow.com/questions/7117200/devise-for-twitter-cookie-overflow-error
      session["devise.twitter_data"] = request.env["omniauth.auth"].except('extra')
      redirect_to new_user_registration_url
    end
   end
Run Code Online (Sandbox Code Playgroud)

我希望用户强制为发送简报,广告客户等提供电子邮件地址

我该如何解决这个问题?

谢谢!

ruby-on-rails devise omniauth ruby-on-rails-3

18
推荐指数
2
解决办法
6939
查看次数

OmniAuth Strategies Facebook NoAuthorizationCodeError(必须传递`code`参数或签名请求(通过`signed_request`参数):

我收到一个错误:

 OmniAuth::Strategies::Facebook::NoAuthorizationCodeError (must pass either a 
`code` parameter or a signed request (via `signed_request` parameter or a 
`fbsr_XXX` cookie)):
Run Code Online (Sandbox Code Playgroud)

它不是一直都会来的.它会偶尔出现,由airbrake通知.

谷歌搜索有很多链接,但无法找到合适的解决方案..任何人?omizersuth.rb在initializers目录下:

OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], {:client_options => {:ssl => {:ca_path => "/etc/ssl/certs"}}, :scope => 'user_about_me,email,publish_actions,user_location,publish_stream,offline_access,user_interests,user_likes,user_hometown', :display => 'popup'}      

  OmniAuth.config.on_failure = Proc.new do |env|
    #this will invoke the omniauth_failure action in SessionsController.
    "SessionsController".constantize.action(:omniauth_failure).call(env)
  end         
end
Run Code Online (Sandbox Code Playgroud)

PS:我正在使用facebook javascript sdk和facebook-omniauth

facebook ruby-on-rails omniauth facebook-javascript-sdk

18
推荐指数
4
解决办法
1万
查看次数

OAuth2和Omniauth之间的区别

我已经阅读了很多关于Omniauth和OAuth2的内容,以及Omniauth如何使用OAuth,但我并不了解每个内容的目标是什么.

例如,我知道有了Omniauth,我可以回复发送params

@auth [ 'omniauth.params']

但如果我使用OAuth,没有Omniauth,我可以这样做吗?

我真正的问题是我不明白它们之间的区别,Omniauth的结束和OAuth的开始,以及我可以用Omuth来做什么,这是OAuth无法实现的.

ruby-on-rails oauth omniauth

18
推荐指数
1
解决办法
5021
查看次数