2013-06-24 5 views
0

Я хотел бы указать, что я новичок, а не разработчик, поэтому могу пропустить некоторый базовый шаг здесь.Ошибка авторизации с помощью pengwynn linkedin gem

Я пытаюсь выяснить, как разрешить использование жемчужины omniauth-linkedin и запросить API Linkedin через pengwynn 'linkedin' gem.

Я могу подключить пользователя через oauth, создать запись пользователя-разработчика и т. Д., Там все хорошо.

Проблемы возникают, когда я пытаюсь запросить API, особенно мне было бы интересно получить список навыков для пользователя. У меня есть этот код под моим users_controller.rb

def show 
    @user = User.find(params[:id]) 
    token = @user.access_token 
    secret = @user.access_secret 

    client = LinkedIn::Client.new(ENV["LINKEDIN_KEY"], ENV["LINKEDIN_SECRET"]) 
    client.authorize_from_access(token, secret) 
    raise client 
    end 

Я поднимаю клиент просто поиграйте с вновь созданной учетной записи клиента, к сожалению, при запросе client.profileI получить 401 ошибку:

к LinkedIn :: Ошибки :: UnauthorizedError: (401): [неавторизованный]. Токен, используемый в запросе OAuth, недействителен. xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>

Что я здесь не так?

ответ

0

До raise client вы должны предоставить разрешения. Вы должны сделать редирект:

redirect_to request_token.authorize_url 

Например:

def show 
    client = LinkedIn::Client.new(ENV["LINKEDIN_KEY"], ENV["LINKEDIN_SECRET"]) 
    request_token = client.request_token({:oauth_callback => "callback url here"}, :scope => "rw_nus r_fullprofile r_emailaddress") 
    client.authorize_from_access(request_token.token, request_token.secret) 
    redirect_to request_token.authorize_url 
end 

В вашем обратном вызове URL следует сохранить маркера для будущих запросов.

Удачи!

+0

Фантастическое спасибо! – Dave