Devise Omniauth,如何链接Google帐户

问题描述 投票:3回答:3

我已经设计出可以与omniauth和一起使用的设备。这是devise.rb的样子:

...
  config.omniauth :facebook, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, :scope => FACEBOOK_APP_PERMISSIONS
  config.omniauth :openid, OpenID::Store::Filesystem.new('./tmp'), :name => 'yahoo', :identifier => 'yahoo.com'
  config.omniauth :openid, OpenID::Store::Filesystem.new('./tmp'), :name => 'gmail', :identifier => 'https://www.google.com/accounts/o8/id'
...

我想将现有帐户与上述3个帐户关联,并使用回调控制器中的以下代码:

...
  def callback(provider)
    if utilizator_signed_in?
      # link it's account
      if Login.link_omniauth(current_utilizator, omniauth_data)
        flash[:notice] = I18n.t "devise.omniauth_callbacks.link.success", :kind => provider
        redirect_to :root
      end
    else
      utilizator = Login.auth_with_omniauth(omniauth_data)

      if !utilizator.nil?
        flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => provider
        sign_in_and_redirect utilizator, :event => :authentication
      else
        utilizator = Login.register_omniauth(omniauth_data)
        flash[:notice] = I18n.t "devise.omniauth_callbacks.register.success", :kind => provider
        sign_in_and_redirect utilizator, :event => :authentication
      end
    end
  end
...

与facebook一起使用时效果很好,但是对于google和yahoo,当前用户已注销,并创建了一个新用户。

如何跳过用户签出阶段?

谢谢,

编辑:我正在使用最新版本3.0.rc3。Login的功能很容易猜到:link_omniauth-将当前登录的用户链接到一个帐户auth_with_omniauth-将对用户进行身份验证register_omniauth-将注册一个新用户

这里的问题是utilizator_signed_in? (user_signed_in?)将在用户登录时为Google返回false,我认为Facebook之前没有发生过sign_out发生的情况。

ruby-on-rails devise omniauth
3个回答
3
投票

我强烈推荐本教程:here(比该主题的rails强制转换和其他教程要深入得多)。特别是,它具有全面的200行代码(services_controller.rb),用于创建控制器,您将需要使用Omniauth有效地处理任何身份验证服务(Twitter / Facebook / Google / Github),并将其链接到预现有的Devise帐户,或创建新帐户。

我有一个(几乎)正在运行的项目,其中here-您可以使用Facebook / Twitter登录(我暂时尚未启用google / github),如果登录后转到Profile-> Services,它将显示与您的帐户关联的多种身份验证服务。] >

我不愿意上载我项目的源代码,因为它有很多与此根本无关的其他代码,但是如果您确实需要,请告诉我。


2
投票

所以我终于找到了我问题的答案。这个人https://github.com/intridea/omniauth/issues/185遇到了同样的问题。


0
投票

我希望已经将我的个人资料任务的gmail地址链接提交到我的应用程序中

© www.soinside.com 2019 - 2024. All rights reserved.