Tag: omn​​iauth

authlogic UserSession.create(@user)给予unauthorized_record

我正在尝试显式创建一个像这个UserSession.create(@user, true)的会话UserSession.create(@user, true)但是没有创建会话, current_user是nil 。 但是当我这样做时,我得到“”}> us = UserSession.create(@user, true) RAILS_DEFAULT_LOGGER.info(us.inspect) #=> UserSession: {:unauthorized_record=>””} 我在这里看了一下Authlogic :: Session :: UnauthorizedRecord 小心这一点,因为Authlogic假设你已经确认用户是他所说的那个人。 例如,这是用于在内部持久保存会话的方法。 Authlogic查找具有持久性令牌的用户。 此时我们知道用户就是他所说的那样,因此Authlogic只是创建了一个记录会话。 这对于第三方身份validation方法(如OpenID)特别有用。 让该方法validation身份,一旦validation,传递对象并创建会话。 这正是我想要做的(我使用omniauth进行身份validation并使用authlogic创建会话)。 我如何解决这个问题,以便我可以在current_user获得有效的会话?

允许用户在使用Twitter登录时输入他们的电子邮件(OmniAuth)

我正在使用omn​​iauth-twitter ,我已经完成了所有设置: user.rb: def self.create_with_omniauth(auth) create! do |user| user.provider = auth[“provider”] user.uid = auth[“uid”] user.name = auth[“info”][“name”] user.email = auth[“info”][“email”] # To pass password validation user.password = user.password_confirmation = SecureRandom.urlsafe_base64(n=6) end end sessions_controller.rb: def create user = User.find_by_email(params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) sign_in user redirect_back_or user else flash.now[:error] = ‘Invalid email/password combination’ render ‘new’ end […]

从youtube登录OAuth保存用户的性别和位置

我有使用OAuth2的youtube登录设置,并且在用户注册成功后,我想将用户性别和位置保存在数据库中。 检查OAuth文档https://developers.google.com/accounts/docs/OAuth2Login#userinfocall,您可以看到您可以访问用户的性别和位置以及姓名,电子邮件和个人资料图片等内容。 下面是我将用户信息保存到数据库的代码 user.rb def self.from_omniauth(auth) where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| user.provider = auth.provider user.uid = auth.uid user.name = auth.info.name user.email = auth.info.email user.picture = auth.info.image user.gender = auth.info.gender user.country = auth.info.locale user.oauth_token = auth.credentials.token user.oauth_expires_at = Time.at(auth.credentials.expires_at) user.save! end end 但是使用auth.info.USER_INFO配置似乎不会将这些值保存到数据库中。 我错过了什么吗? 以下是我的应用程序要求的参数,没有任何范围。 UPDATE 我通过传入userinfo.profile参数的额外范围来实现此目的。 请记住包含没有逗号分隔的完整url。 Rails.application.config.middleware.use OmniAuth::Builder do provider :youtube, YOUTUBE_KEY, YOUTUBE_SECRET, { :scope […]

设计:新用户注册问题,PG :: ProtocolViolation。 Rails4,Postgres

我正在使用devise和omni-auth登录linkedin。 我将from_omniauth方法添加到Railscast中提到的用户模型: 这是代码: #Create a new user if does not exist def self.from_omniauth(auth) where(auth.slice(:provider, :uid)).first_or_create! do |user| user.provider = auth.provider user.uid = auth.uid user.email = auth.info.email end end Started GET “/users/auth/linkedin/callback?oauth_token=XXX” INFO — omniauth: (linkedin) Callback phase initiated. Processing by OmniauthCallbacksController#linkedin as HTML (0.4ms) BEGIN User Exists (0.6ms) SELECT 1 AS one FROM “users” WHERE […]

如何检查用户是否使用omniauth登录

我有一个应用程序在设计和omniauth运行用户注册。 但是当有人使用omniauth登录facebook时,我想为该用户显示一些额外的信息。 但是,我找不到一种方法来确定该用户是否已使用Facebook登录。 我相信它与devise_helper(user_signed_in?)有关,但我不知道如何在omniauth中使用它。 user.rb def self.find_for_facebook_oauth(auth) where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| user.name = auth.info.name user.provider = auth.provider user.uid = auth.uid user.email = auth.info.email user.password = Devise.friendly_token[0,20] user.username = auth.info.email user.token = auth.credentials.token user.save! end end devise.rb config.omniauth :facebook, ENV[“APP_ID”], ENV[“APP_SECRET”], {:scope => ’email, offline_access’, :client_options => {:ssl => {:ca_file => ‘/usr/lib/ssl/certs/ca-certificates.crt’}}} 码

User.find_for_oauth – 我在哪里可以找到它?

我正在学习Devise + omniauth。 在大多数示例中,我找到方法User.find_for_oauth 我在哪里可以找到这种方法的文档及其来龙去脉? 它是由Devise还是omniauthgem提供的? 这里和这里是我遇到它的一些例子。

Omniauth与FourSquare问题

更新2011/05/01:我后来仔细阅读了FourSquare的API文档,发现它说: (请注意,请求参数不是JSON,它们是标准的HTTP密钥和值。)所有身份validation都是通过OAuth2进行的,这意味着所有请求都必须是https。 这可能是我的开发机器中没有SSL连接的问题吗? 大家好! 我正在尝试通过Omniauth连接FourSquare,我按照下面的Railscast完成,并将提供商更改为foursquare。 但返回始终是“invalid_credentials”。 我google了一下,发现在GitHub上有关于此的讨论(下面的链接),但似乎还没有结论。 任何人都知道出了什么问题? Rails.application.config.middleware.use OmniAuth::Builder do provider :twitter, “XXXXXXX”,”XXXXXXX” provider :foursquare, ‘XXXXXXX’, ‘XXXXXXX’ end RailsCast链接 关于GitHub的讨论

Omniauth Facebook的before_filter?

对于设计,有一个非常容易使用的Before_filter在控制器中使用。 由于某种原因,我不能让这个为Omniauth_facebook Gem工作。 我在Facebook Omniauth上关注了Railscast before_filter :authenticate def authenticate redirect_to :login unless User.find_by_provider_and_uid(auth[“provider”], auth[“uid”]) end end 但是我收到一个错误: NameError in PostsController#new undefined local variable or method `auth’ for # 有什么想法吗?

Gitlab和omniauth-pam身份validation

基本上我按照这些说明添加自定义omniauth提供程序: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md#using-custom-omniauth-providers 我想使用omniauth-pam: https://github.com/nickcharlton/omniauth-pam 添加gem并在gitlab.yml中配置后: providers: – { name: ‘pam’ } 它不会再出现此错误: Received wrong number of arguments. [nil, nil] (ArgumentError) /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/omniauth-1.1.4/lib/omniauth/strategy.rb:143:in `initialize’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.15/lib/action_dispatch/middleware/stack.rb:43:in `new’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.15/lib/action_dispatch/middleware/stack.rb:43:in `build’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.15/lib/action_dispatch/middleware/stack.rb:113:in `block in build’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.15/lib/action_dispatch/middleware/stack.rb:113:in `each’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.15/lib/action_dispatch/middleware/stack.rb:113:in `inject’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.15/lib/action_dispatch/middleware/stack.rb:113:in `build’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/engine.rb:475:in `app’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/application/finisher.rb:31:in `block in ‘ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/initializable.rb:30:in `instance_exec’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/initializable.rb:30:in `run’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/initializable.rb:55:in `block in run_initializers’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/initializable.rb:54:in `each’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/initializable.rb:54:in `run_initializers’ /sync1/gitlab/vendor/bundle/ruby/2.0.0/gems/railties-3.2.15/lib/rails/application.rb:136:in […]

Rails 3.2 Omniauth Devise – 添加密码 – 跳过当前密码

我正在使用Omniauth允许用户通过Facebook,Twitter和Google登录(并创建帐户)。 但是,如果用户决定不再使用这些服务,但继续使用他们的帐户,他们会想要添加密码。 如何在不输入current password情况下让用户为其帐户添加current password ?* 当我让用户转到edit_user_registration_path(@user) ,他们会看到以下表单: = form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, name: ‘validation’}) do |f| = devise_error_messages! = f.label :email, class: ‘block’ = f.email_field :email, class: ‘large’ %span.infobar Keep this here unless you’d like to change your email = f.label :password, class: ‘block’ = f.password_field :password, class: ‘large’ […]