OAuth проблема с использованием linkedin ruby ​​gem - PullRequest
2 голосов
/ 09 июня 2011

Я пытаюсь подключиться к API-интерфейсу linkedin с помощью самоцвета linkedin.У меня есть следующий код:

require "rubygems"
require "yaml"
require "linkedin"

config = YAML.load_file("config.yml")

client = LinkedIn::Client.new(config["linkedin"]["consumer_key"], config["linkedin"]["consumer_secret"])
rtoken = client.request_token.token
rsecret = client.request_token.secret

puts client.request_token.authorize_url

puts "Access this URL get the PIN and paste it here:"
pin = gets

puts client.authorize_from_request(rtoken, rsecret, pin)

Когда я запускаю этот код, каждый шаг OAuth работает нормально, за исключением последнего (authorize_from_request).Выдает следующую ошибку:

/Library/Ruby/Gems/1.8/gems/oauth-0.4.4/lib/oauth/consumer.rb:181:in `request': additional_authorization_required (OAuth::Problem)
from /Library/Ruby/Gems/1.8/gems/oauth-0.4.4/lib/oauth/consumer.rb:197:in `token_request'
from /Library/Ruby/Gems/1.8/gems/oauth-0.4.4/lib/oauth/tokens/request_token.rb:18:in `get_access_token'
from /Library/Ruby/Gems/1.8/gems/linkedin-0.2.2/lib/linked_in/authorization_helpers.rb:28:in `authorize_from_request'
from linked_in.rb:17

В моем коде что-то отсутствует?Какая дополнительная авторизация требуется?

Согласно документации OAuth:

extra_authorization_required: токен доступа не имеет правильных областей доступа.

Все ещеЯ не понимаю, почему токен доступа не имеет правильной области доступа.

Спасибо

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Убедитесь, что вы удаляете конечный пробел из булавки перед его использованием

puts "Access this URL get the PIN and paste it here:"
pin = gets.strip

puts client.authorize_from_request(rtoken, rsecret, pin)
0 голосов
/ 02 марта 2015

Кроме того, не забудьте установить правильную область действия при настройке инициализатора гемов Omniauth, кроме того, как приложение уже настроено в сети разработчиков Linkedin.

Попробуйте добавить что-то вроде

:scope => 'r_fullprofile r_contactinfo r_emailaddress r_network'

к существующей строке конфигурации, которая может быть в файле инициализатора Omniauth (или Devise).

provider :linkedin, ENV['LINKEDIN_KEY'], ENV['LINKEDIN_SECRET']
...