Forum: Ruby on Rails linkedin login using omniauth

B4612bdda9c998a4c0b97807fc7681ac?d=identicon&s=25 Rekha Benada (Guest)
on 2013-08-26 22:41
(Received via mailing list)
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
Trace<http://localhost:3000/auth/linkedin/callback?oauth...
 | Framework
Trace<http://localhost:3000/auth/linkedin/callback?oauth...
 | Full
Trace<http://localhost:3000/auth/linkedin/callback?oauth...

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<http://localhost:3000/auth/linkedin/callback?oauth...

Show env
dump<http://localhost:3000/auth/linkedin/callback?oauth...
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
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2013-08-26 23:00
(Received via mailing list)
On 26 August 2013 21:39, Rekha Benada <rekha.benada@gmail.com> 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
B4612bdda9c998a4c0b97807fc7681ac?d=identicon&s=25 Rekha Benada (Guest)
on 2013-08-27 07:06
(Received via mailing list)
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.?
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.