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