我目前正在为Rails 3.0.0应用程序添加OpenID登录支持。
我已经安装了ruby-openid
(宝石)和open_id_authentication
(插件)。但是,在按照设置两者所需的步骤(从READMEs)后,我仍然收到此错误:
undefined method `authenticate_with_open_id'
我尝试使用谷歌搜索问题,但大多数线程似乎都是从几年前开始的,并且仍然存在可疑的问题。
我错过了一些明显的东西吗?是什么导致了这个问题?请注意,我在environment.rb中切换到基于文件的存储没有问题,所以我确信该插件已正确安装。
更新:一些尚未解决的相同问题:
答案 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
无论如何,最后,我找到了一个宁静的路线问题并修复了这个问题,现在登录工作了!