Devise omniauth 因未知原因停止工作

Devise omniauth stopped working for some unknown reason

我在 Rails 应用程序上有 Ruby 使用 deviseuser 模型具有 omniauthable 属性,即用户可以通过社交网络帐户登录(应用程序允许 google 和 linkedin)。

在我尝试设置电子邮件确认注册之前,通过社交网络登录一直有效。 现在任何社交注册尝试都会导致 Invalid credentials 错误,尽管 config.omniauth 行和具有凭据的环境变量尚未更改。

在生产模式下,社会注册仍然有效,我从服务器下载旧代码(开发和生产环境使用相同的凭据)。但它没有帮助,我仍然无法在开发模式下使用社交网络登录我的应用程序。我认为浏览器缓存是这个错误的原因,但在其他浏览器中我看到了同样的错误消息。

我的devise.rb代码:

Devise.setup do |config|

    config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET']
    config.omniauth :linkedin, ENV['LINKEDIN_KEY'], ENV['LINKEDIN_SECRET']

user.rb:

class User < ActiveRecord::Base
    devise :database_authenticatable,
        :registerable,
        :recoverable,
        :rememberable,
        :trackable,
        :validatable,
        :omniauthable,
        :omniauth_providers => [
            :google_oauth2,
            :linkedin
        ]

我是否正确理解凭据是社交网络应用程序 ID 和秘密?

我的错误在哪里?

添加文件config/api_keys.yml

defaults: &defaults
  linkedin:
    api_key: "KEY"
    api_secret: "SECRET"

  development:
    <<: *defaults

  production:
    linkedin:
      api_key: "KEY2"
      api_secret: "SECRET2"

然后在我的 devise.rb 文件中:

API_KEYS = YAML::load_file("#{Rails.root}/config/api_keys.yml")[Rails.env]
config.omniauth :linkedin , API_KEYS['linkedin']['api_key'], API_KEYS['linkedin']['api_secret']

可能您在开发中删除了您的设计密钥。

使用rake secret生成一个。

问题出在 omniauth-oauth2 gem 中,很可能出现在 bundle installbundle update 命令之后。

当我在开发计算机和生产服务器上比较 gems 时,我发现 omniauth-oauth2 gem 有不同的版本。然后我回滚这个 gem 版本并且应用程序开始工作。

感谢帮助!

更新:问题已在 github

创建