Rails: OAuth2 gem возвращает ошибку 400 при попытке подключиться к Facebook - PullRequest
0 голосов
/ 07 мая 2011

Я пытаюсь добавить Facebook connect в наше веб-приложение, и у меня возникла проблема с. Все отлично работает локально (я могу аутентифицироваться через Facebook), но когда я отправляю код на наш сервер разработки (который живет в дикой природе), каждый раз, когда я пытаюсь аутентифицироваться, он возвращает следующий код ошибки:

OAuth2::HTTPError: Received HTTP 400 during request

Это действительно единственное объяснение, которое я получаю. Опять же, это работает на моей локальной машине, и самоцветы и такие соответствия между коробками, так что я немного запутался. Вот код, который я выполняю.

def facebook_connect
  #Set the scope we want to pull from Facebook, along with the callback URL
  options = {
    :redirect_uri => facebook_callback_url,
    :scope => "email,publish_stream"
  }

  #Go out and fetch the url
  client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_SECRET, {:site => FACEBOOK_API_URL, :access_token_method => :post})
  #Redirect to the callback for processing
  redirect_to client.web_server.authorize_url(options)
end

def facebook_callback
  #Client URL
  client = OAuth2::Client.new(FACEBOOK_API_KEY, FACEBOOK_SECRET, {:site => FACEBOOK_API_URL, :access_token_method => :post})

  #Parse out the access token
  access_token = client.web_server.get_access_token(params[:code], :redirect_uri => facebook_callback_url)

  #Get the user
  fb_user = JSON.parse(access_token.get('/me'))

  #Do some authentication database stuff
end

def facebook_callback_url
  uri = URI.parse(request.url)
  uri.path = '/users/facebook_callback'
  uri.query = nil
  uri.to_s
end

Я искал в Google, но обнаруженные решения не работают. Кроме того, если кто-то знает, как анализировать и отображать ошибки OAuth2, я также был бы признателен за это. Спасибо

Ответы [ 2 ]

0 голосов
/ 10 мая 2011

Проблема на самом деле оказалась проблемой с драгоценным камнем "Фарадей".Наш сервер разработки не был настроен для обработки SSL, который возвращал код ошибки.Мы исправили его, используя следующий ответ:

OmniAuth & Facebook: сбой проверки сертификата

0 голосов
/ 07 мая 2011

Предполагая, что Facebook OATH знает IP-адрес вашего сервера (они очень строги в этом отношении), я бы порекомендовал вам использовать «спасение», чтобы перехватить это исключение, получить обратный след, а затем найти, где оно вызывается и размещатькуча операторов отладки для проверки состояния как запроса, так и ответа, а также маркеров доступа.

Или вы можете настроить удаленную отладку с Rubymine или NetBeans, что является непростой задачей:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...