Ruby, Sinatra, omniauth-github Authentication Failure Ошибка обратного вызова

хорошо, прошло уже более 5 часов, а я все еще не понимаю, куда. Я пытаюсь установить гем omniauth-gihub в одном из моих приложений на основе Ruby-Sinatra. Ниже приводится то, что я еще сделал.

Добавлены драгоценные камни в Gemfile (конечно, команда обновления & Ran bundler):

source 'https://rubygems.org'

gem 'sinatra'
gem 'haml'
gem 'shotgun'
gem 'omniauth', :git => 'git://github.com/intridea/omniauth.git'
gem 'omniauth-github', :git => 'git://github.com/intridea/omniauth-github.git'

В моем файле app.rb у меня есть следующий код:

#imports
require 'rubygems'
require 'bundler'
require 'sinatra'
require 'omniauth'
require 'omniauth-github'
require 'haml'
require './helpers.rb'

#Configure OmniAuth
use OmniAuth::Builder do
  provider :github, ENV['api_key'], ENV['secret'], # Removing the key and secret for security reasons
  scope: "user,repo,gist"
end

#Application Settings
set :sessions, true
set :views, 'templates'


#Get Method for Application Root
get '/' do
  haml :index
end

#Get/Post Methods For Authentication
%w(get post).each do |method|
  send(method, "/auth/:provider/callback") do
    env['omniauth.auth']
  end 
end

Настройки приложения Github следующие:

URL = http://127.0.0.1:4567
Callback URL = http://127.0.0.1:4567/auth/github/callback

Теперь всякий раз, когда я посещаю 127.0.0.1:4567/auth/github/callback, я получаю следующую ошибку:

I, [2012-07-26T07:05:23.540462 #30458]  INFO -- omniauth: (github) Callback phase initiated.
E, [2012-07-26T07:05:23.540700 #30458] ERROR -- omniauth: (github) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError
localhost - - [26/Jul/2012:07:05:23 IST] "GET /auth/github/callback HTTP/1.1" 302 9
- -> /auth/github/callback
localhost - - [26/Jul/2012:07:05:23 IST] "GET /auth/failure?message=invalid_credentials&strategy=github HTTP/1.1" 404 448
- -> /auth/failure?message=invalid_credentials&strategy=github
localhost - - [26/Jul/2012:07:05:23 IST] "GET /favicon.ico HTTP/1.1" 404 447
- -> /favicon.ico

кажется, он даже не пытается подключиться к github, я думал, что уже вошел в систему, поэтому я вышел из github и снова попытался посетить 127.0.0.4567/auth/github/callback, и да, он даже не подключается и не отправляет какую-либо информацию в github .

Я проверил свой ключ API и секрет, и они верны. Я не могу понять, что мне не хватает, и очень устала. Мы будем очень благодарны за любую помощь или предложение.

РЕДАКТИРОВАТЬ::

Хорошо, я обнаружил, что код, вызывающий ошибку, выглядит следующим образом в oauth2.rb

def callback_phase
    if request.params['error'] || request.params['error_reason']
      raise CallbackError.new(request.params['error'], request.params['error_description'] || request.params['error_reason'], request.params['error_uri'])
    end 
    if request.params['state'].to_s.empty? || request.params['state'] != session.delete('omniauth.state')
      raise CallbackError.new(nil, :csrf_detected)
    end

Я чувствую, что это как-то связано с CSRF.


person Amyth    schedule 26.07.2012    source источник


Ответы (2)


Это может быть интересно: https://github.com/intridea/omniauth-github/issues/12

Я получал ту же ошибку, что и вы, и добавление scope: 'user' исправило ее для меня.

Я вижу, вы уже используете прицел, но ссылка может направить вас на верный путь.

person emptywalls    schedule 27.07.2012
comment
Спасибо за ответ, я уже прошел через это. Кроме того, несколько часов назад я решил эту проблему, просто обновил гем-файл omni-oauth2 до последней версии и обновил пакет. Вуаля! - person Amyth; 27.07.2012

Была та же проблема - понижение версии omniauth-facebook до 1.4.0 исправило ее для меня. https://github.com/mkdynamic/omniauth-facebook/issues/73

person Aidan Feldman    schedule 06.08.2012
comment
В новой версии omni-authfacebook есть несколько ошибок, с этой проблемой сталкиваются многие пользователи. На данный момент лучшим решением является переход на более раннюю версию. - person Amyth; 07.08.2012