首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的OmniAuth-Twitter由于验证而无法创建新用户

简单的OmniAuth-Twitter由于验证而无法创建新用户
EN

Stack Overflow用户
提问于 2012-05-23 21:18:40
回答 1查看 1.1K关注 0票数 0

我松散地跟随Railscast简单的OmniAuth http://railscasts.com/episodes/241-simple-omniauth创建我的Twitter登录。当我尝试通过twitter登录并创建一个新用户时,我会得到以下消息:

代码语言:javascript
复制
Validation failed: Password can't be blank, Name is not valid., Email can't be blank, Email is not valid.

如果按下刷新按钮,将得到以下错误:

代码语言:javascript
复制
OAuth::Unauthorized 401 Unauthorized

我已经将回调URL设置为http://127.0.0.1:3000/auth/twitter/callback,但我仍然收到该消息。我在本地主机上测试。

我把我的用户建模为Hartl的铁路http://ruby.railstutorial.org/ruby-on-rails-tutorial-book,我的网站项目要求用户填写这些字段。

与栏杆不同,我创建了一种新方法来处理杂食登录:

sessions_controller.rb

代码语言:javascript
复制
def omniauth_create
  auth = request.env["omniauth.auth"]
  user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || 
         User.create_with_omniauth(auth)
  session[:user_id] = user.id
  redirect_to user
end

user.rb

代码语言:javascript
复制
def self.create_with_omniauth(auth)
  create! do |user|
    user.provider = auth["provider"]
    user.uid = auth["uid"]
    user.name = auth["info"]["name"]
  end
end

问题:如何绕过验证?

到目前为止,我已经尝试过使用skip_before_filter :authenticate, :only => [:omniauth_create],但这不起作用。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-23 21:31:41

有两种方法可以跳过验证。您可以通过将:validate => false传递给create方法(通常是一个糟糕的想法)跳过它们,或者您可以将验证修改为如下所示:

user.rb

代码语言:javascript
复制
validates_confirmation_of :password, :if => :password_required?

def password_required?
  !provider.blank? && super
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10728005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档