2016-02-25 1 views
2

Я проверяю использование OmniAuth с помощью Twitter и Instagram. Twitter работает хорошо.Не удалось аутентифицироваться с помощью omniauth-instagram, client_id missing

Когда я запускаю процесс аутентификации с запросом/auth/instagram, OmniAuth не включает client_id в заголовок авторизации.

Я инициализируется OmniAuth как:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :twitter, ENV.fetch('TWITTER_CONSUMER_KEY'), ENV.fetch('TWITTER_CONSUMER_SECRET') 
    provider :instagram, ENV.fetch('INSTAGRAM_CLIENT_ID'), ENV.fetch('INSTAGRAM_CLIENT_SECRET') 
end 

Когда я посылаю запрос/авториз/Instagram, он возвращает:

{"code": 400, "error_type": "OAuthException", 
"error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"} 

и показывает запрос URI без моего client_id:

https://www.instagram.com/oauth/authorize?client_id=&redirect_uri=http://demo.herokuapp.com/auth/instagram/callback&response_type=code&scope=basic&state=952ced9482ccf34faf3e09cffd40f59548f3c5a539499723 

Любая помощь будет оценена по достоинству.

ответ

0

Ваши переменные ENV, вероятно, не загружаются вовремя/после загрузки вашего инициализатора. Попробуйте заменить их фактическими строками и посмотрите, работает ли это. Не делайте это для публичного репо ... поверьте мне, это раздражает, если вы это сделаете.

Я - фанат dotenv. Я использую версию rails-now для загрузки ENV vars в инициализаторы.

gem 'dotenv-rails', :require => 'dotenv/rails-now' в Gemfile

ссылка, как: ENV['INSTAGRAM_ID']

Смежные вопросы