尝试使用open_id_authentication时出现NoMethodError

时间:2011-01-16 02:33:35

标签: ruby-on-rails openid ruby-on-rails-plugins

我目前正在为Rails 3.0.0应用程序添加OpenID登录支持。

我已经安装了ruby-openid(宝石)和open_id_authentication(插件)。但是,在按照设置两者所需的步骤(从READMEs)后,我仍然收到此错误:

undefined method `authenticate_with_open_id'

我尝试使用谷歌搜索问题,但大多数线程似乎都是从几年前开始的,并且仍然存在可疑的问题。

我错过了一些明显的东西吗?是什么导致了这个问题?请注意,我在environment.rb中切换到基于文件的存储没有问题,所以我确信该插件已正确安装。

更新:一些尚未解决的相同问题:

http://railsforum.com/viewtopic.php?id=23151

1 个答案:

答案 0 :(得分:0)

遇到类似的错误;奇怪的是,我在另一个分支上使用Rails 3.2,并且无法弄清楚差异;无论如何,我发现我在这里提出了一些建议:Rails 3.0.9 + open_id_authentication

也就是说,在include OpenIdAuthentication之后添加行class SessionsController < ApplicationController

class SessionsController < ApplicationController
  include OpenIdAuthentication

但是现在我在我的日志中得到一个Completed 401 Unauthorized,看到一个空白页面 - 只是和标签。啊。

更新:噢,走得更远;我关注了这篇文章:open_id_authentication - "OpenIdAuthentication.store is nil. Using in-memory store." problem

正如他们所说,“在内部添加了一个名为config / initializers / openid.rb的初始化程序”:

require 'open_id_authentication' # this was needed, but not described in the referred-to post
OpenIdAuthentication.store = :file

然后我被引导到OpenId提供商并且能够点击“允许”,但在返回我的应用程序时,我现在看到:

NoMethodError in SessionsController#create
undefined method `encoding' for nil:NilClass

无论如何,最后,我找到了一个宁静的路线问题并修复了这个问题,现在登录工作了!