Ruby on rails Omniauth回调

Ruby on rails Omniauth回调,ruby-on-rails,devise,linkedin,Ruby On Rails,Devise,Linkedin,我在rails 4应用程序中使用Desive。我通过Facebook、LinkedIn和电子邮件进行身份验证 我刚刚开始使用Figaro,我对代码所做的唯一更改是将我用于电子邮件帐户的密码从production.rb交换到application.yml文件中 现在,当我测试LinkedIn注册链接时,我得到一个错误,表示出现了问题(在按下“向LinkedIn注册”后)。当我尝试使用其他选项进行身份验证时,会出现相同的错误 linkedin的omniauth回调控制器中出现回调错误。出现问题的行是

我在rails 4应用程序中使用Desive。我通过Facebook、LinkedIn和电子邮件进行身份验证

我刚刚开始使用Figaro,我对代码所做的唯一更改是将我用于电子邮件帐户的密码从production.rb交换到application.yml文件中

现在,当我测试LinkedIn注册链接时,我得到一个错误,表示出现了问题(在按下“向LinkedIn注册”后)。当我尝试使用其他选项进行身份验证时,会出现相同的错误

linkedin的omniauth回调控制器中出现回调错误。出现问题的行是下面的“@user.send_admin_email”:

def linkedin
    @user = User.find_for_linkedin_oauth(request.env["omniauth.auth"])
      if @user.persisted?
        @user.send_admin_mail

        redirect_to root_path, :event => :authentication
        # sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated
        #  set_flash_message(:notice, :success, :kind => "LinkedIn") if is_navigational_format?
        else
          session["devise.linkedin_data"] = request.env["omniauth.auth"]
          redirect_to root_path
        end
      end
我有一个邮件设置,它会给我发送一封电子邮件,告诉我什么时候有新的注册。它使用我将密码从production.rb移到application.yml的电子邮件地址

有人知道如何解决这个错误吗


非常感谢

问题可能是application.yml文件的文本编码,特别是如果您的电子邮件密码中包含非标准字符。尝试启动控制台,只需将密码输出到

p ENV['your_figaro_key'].to_s
看看这是否会返回您所期望的结果

嗯,对我来说,这似乎是一个“强参数”问题。检查您的“发送管理邮件”以查看是否有“更新”或“保存”

我猜您的user.rb类似于:

class User < ActiveRecord::Base
...
attr_accessor :extras

def self.find_for_linkedin_oauth(access_token, signed_in_resource=nil)
  ...
  user = User.where(...)
  ...
  user.extras = access_token.extras
  ...
end

def send_admin_mail
  ...
  self.update_attributes(some_attribute: extras["some_attribute"])
  ...
end

如果我没有错的话,第一个实现在以前版本的strong parameters中工作,但现在不再工作。

在生产中,您需要将密钥传递给生产服务器。例如,对于figaro和heroku,您可以:
figaro heroku:set-e production
Hi,谢谢您的提示。我不知道我应该在哪里试一试?在production.rb文件中,是否有一行我应该添加到config.action\u mailer.smtp\u设置中?谢谢你好,丹尼尔-我的发送电子邮件方法中没有更新或保存。我有:def send_admin_mail adminiler。新用户正在等待批准(self)。deliver end你能看到我应该添加的内容吗?非常感谢我的邮件:def new\u user\u waiting\u for\u approval(user)@user=user mail(收件人):www@www.com,发件人:www@www.com,主题:“注册请求#{user.first#name}{user.last#name}”)结束,并在您的查找中查找linkedin?是否在用户记录中保存参数?几周前我遇到了这样一个问题:我有一个稳定的Rails 4应用程序,然后我更新了gems,Facebook登录崩溃了。几天前,Rails团队改变了强参数的工作方式。对于可能有相同问题的任何人,我忘了将我的.gitignore文件从application.yml发布到heroku,以便它具有身份验证详细信息。非常感谢您的帮助-我希望这对其他人有所帮助。嗨,Houen-我在尝试此操作时故意将其设置为简单字符串,以避免识别字符的任何限制。谢谢你的提示,但这不是我的错。无论如何,谢谢你。
self.update_attributes(some_attribute: extras.permit(:some_attribute))