Linkedin login using omniauth

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

/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
Tracehttp://localhost:3000/auth/linkedin/callback?oauth_token=ed161640-d196-4fc6-adfe-771d5f6fd322&oauth_verifier=57451#
| Framework
Tracehttp://localhost:3000/auth/linkedin/callback?oauth_token=ed161640-d196-4fc6-adfe-771d5f6fd322&oauth_verifier=57451#
| Full
Tracehttp://localhost:3000/auth/linkedin/callback?oauth_token=ed161640-d196-4fc6-adfe-771d5f6fd322&oauth_verifier=57451#

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
dumphttp://localhost:3000/auth/linkedin/callback?oauth_token=ed161640-d196-4fc6-adfe-771d5f6fd322&oauth_verifier=57451#

Show env
dumphttp://localhost:3000/auth/linkedin/callback?oauth_token=ed161640-d196-4fc6-adfe-771d5f6fd322&oauth_verifier=57451#
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

On 26 August 2013 21:39, Rekha B. [email protected] wrote:

class User < ActiveRecord::Base
user.oauth_expires_at = Time.at(auth.credentials.expires_at)

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

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.?