linkedin login using omniauth

115 views
Skip to first unread message

Rekha Benada

unread,
Aug 26, 2013, 4:39:06 PM8/26/13
to rubyonra...@googlegroups.com
Hi,

I am trying to add linkedin login feature in my rails application using omniauth gem..I used omniauth gem for Fb login and it's working fine..but it's not working for linkedin login

this is my code

/model/user.rb

class User < ActiveRecord::Base
  attr_accessible :name, :oauth_expires_at, :oauth_token, :provider, :uid



 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.oauth_token = auth.credentials.token
      user.oauth_expires_at = Time.at(auth.credentials.expires_at)
      user.save!
    end
  end

/controller/sessions_controller.rb

class SessionsController < ApplicationController


def create

 user = User.from_omniauth(env["omniauth.auth"])
    session[:user_id] = user.id

    redirect_to root_url


end


def destroy
  session[:user_id] = nil
  redirect_to root_url, :notice => "Signed out!"
end



end

/config/initializer/omniauth.rb

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, '###########', '###########'
  provider :linkedin, "##########", "##############", :scope => 'r_fullprofile r_emailaddress r_network', :fields => ["id", "email-address", "first-name", "last-name", "headline", "industry", "picture-url", "public-profile-url", "location", "connections"]
end
end



Error:

TypeError in SessionsController#create

can't convert nil into an exact number


Application Trace | Framework Trace | Full Trace
app/models/user.rb:12:in `at'
app/models/user.rb:12:in `block in from_omniauth'
app/models/user.rb:7:in `tap'
app/models/user.rb:7:in `from_omniauth'
app/controllers/sessions_controller.rb:6:in `create'

Request

Parameters:

{"oauth_token"=>"ed161640-d196-4fc6-adfe-771d5f6fd322",
 "oauth_verifier"=>"57451",
 "provider"=>"linkedin"}

Show session dump

Show env dump

Response

Headers:

None



I am not sure what fields I need to add or remove from user table and what changes required in controller  and model
please help

Thanks

Colin Law

unread,
Aug 26, 2013, 4:58:34 PM8/26/13
to rubyonra...@googlegroups.com
On 26 August 2013 21:39, Rekha Benada <rekha....@gmail.com> wrote:
> Hi,
>
> I am trying to add linkedin login feature in my rails application using
> omniauth gem..I used omniauth gem for Fb login and it's working fine..but
> it's not working for linkedin login
>
> this is my code
>
> /model/user.rb
>
> class User < ActiveRecord::Base
> attr_accessible :name, :oauth_expires_at, :oauth_token, :provider, :uid
>
>
>
> 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.oauth_token = auth.credentials.token
> user.oauth_expires_at = Time.at(auth.credentials.expires_at)
> user.save!
> end
> end
> ...
> Error:
>
> TypeError in SessionsController#create
>
> can't convert nil into an exact number
>
>
> Application Trace | Framework Trace | Full Trace
>
> app/models/user.rb:12:in `at'

You have not told us which line this is, but I presume it is
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
What is the value of auth.credentials.expires_at, which seems to be
the value it is complaining about?

Colin

Rekha Benada

unread,
Aug 27, 2013, 1:05:12 AM8/27/13
to rubyonra...@googlegroups.com, cla...@googlemail.com
oauth_expires_at is a column in user table and It gives date and time...which I used for facebook login...But why it's giving problem with linkedin.?
Reply all
Reply to author
Forward
0 new messages