2015-10-25 4 views
2

Я видел много сообщений об этом типе ошибок, но похоже, что все, что я могу найти, применимо к моему делу.Ошибка проверки с помощью omniauth-facebook в Rails

Это ошибка я получаю назад от Facebook:

Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request 

Это URL веб-сайта я настроил: http://landmark.dev/

Это редирект URI я определил: http://landmark.dev/auth/facebook/callback

это мой omniauth.rb (очищено)

OmniAuth.config.full_host = "http://landmark.dev" 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :twitter, 'xxx', 'xxx' 
    provider :facebook, 'xxx', 'xxx', :scope => 'email' 
end 

OmniAuth.config.on_failure do |env| 
    [200, {}, [env['omniauth.error'].inspect]] 
end 

Это мой routes.rb для обратного вызова:

match 'auth/:provider/callback', to: 'sessions#create', via: :all 

Twitter работает отлично, кстати, - это просто facebook, что не будет подключаться. Я сражаюсь с этим уже 3 дня и пытаюсь найти решение. Заранее спасибо за вашу помощь.

UPDATE: Ожидая ответа на это, чтобы помочь понять это, я попытался добавить в OmniAuth-Google-OAuth2, как аутентификация через Google + является частью плана для данного проекта, а также. Кажется, я получаю ту же ошибку от Google:

"error" : "redirect_uri_mismatch" 

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

ответ

2

В последнем обновлении драгоценного камня omniauth-oauth2 появилась ошибка. Dowgrande ваша версия gem и она должна работать пока.

gem 'omniauth-oauth2', '~> 1.3.1' 

Вы можете посмотреть обсуждение здесь

https://github.com/intridea/omniauth-oauth2/issues/81

+0

Это сделало трюк! Удивительный - большое спасибо – unclesol

0

Если вы пытаетесь сделать это на своем локальном компьютере (я думаю, вы это делаете, потому что я думаю, что домены этого домена недоступны в данный момент, и вы должны использовать сервер, такой как POW). Проблема в том, что Facebook не может связаться с вашей машиной.

Вы можете использовать такое решение как localtunnel http://localtunnel.me/ для разработки или попробовать использовать localhost, я думаю, что localhost работал в прошлом, хотя я не уверен в данный момент.

+0

Да, это локальная машина, использующая военнопленного. Это похоже на действительно странный ответ, так как все, что нужно сделать Facebook, - это отправить токен обратно на redirect_uri - он не должен доходить до моей машины. – unclesol

+0

Или это работает иначе, чем другие поставщики OAuth2? В настоящее время я подключаю этот сайт только с Twitter и другим локальным сайтом с сервером IdentityServer OAuth2. Они просто отправляют токен обратно в redirect_uri, но это определено и не проблема. – unclesol

+0

Я думаю, что это должен быть адрес, который Facebook может иметь доступ или localhost. –