Я пытаюсь настроить новое приложение rails4.2 для аутентификации с Google Oauth2.Google oauth2 с разработкой и omniauth обработаны как сбой
Кажется, я успешно прошел процесс, но он рассматривается как сбой.
Первоначальные авторизации, похоже, идут хорошо, пока Google не отправит обратный вызов. Тогда это, кажется, неправильно идентифицировано как отказ.
Сообщение об ошибке получили в жизни: Could not authenticate you from Google because "Invalid credentials".
Я гугле для решения, но безрезультатно.
Возможно ли включить дополнительную регистрацию, чтобы понять, почему она выбирает процесс с помощью метода отказа?
Вот журнал запрос:
Started GET "https://stackoverflow.com/users/auth/google" for 127.0.0.1 at 2016-04-17 09:37:33 +0800
Started GET "https://stackoverflow.com/users/auth/google/callback?state=<<state>>&code=<<code>>" for 127.0.0.1 at 2016-04-17 09:37:45 +0800
Processing by Users::OmniauthCallbacksController#failure as HTML
Parameters: {"state"=>"<<state>>", "code"=>"<<code>>"}
Redirected to http://test_app.dev/sign_in
Completed 302 Found in 1ms (ActiveRecord: 0.0ms)
При тестировании я нажал разрешить, когда Google побудил меня, и URL-адрес выглядит хорошо, так почему это обрабатывается, как если бы это был провал?
конфигурации/инициализатора/devise.rb
config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ['GOOGLE_CLIENT_SECRET'],
:strategy_class => OmniAuth::Strategies::GoogleOauth2,
:name => 'google',
:scope => 'email,profile,contacts',
:access_type => 'offline',
:image_aspect_ratio => 'square'
routes.rb
devise_for :users, :controllers => { omniauth_callbacks: 'users/omniauth_callbacks' }
resources :users
devise_scope :user do
get 'sign_in', :to => 'devise/sessions#new', :as => :new_user_session
get 'sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session
end
контроллеры/пользователи/omniauth_callbacks_controller.rb
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def google
logger.debug 'Omniauth callback called' # Never get's called
end
end
application_controller.rb
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
# Direct to user profile after sign in
def after_sign_in_path_for(resource)
user_path(current_user)
end
# Needed by Devise when using omniauth
def new_session_path(scope)
new_user_session_path
end
end
Мои драгоценные камни:
Using warden 1.2.6
Using devise 3.5.6
Using oauth2 1.0.0
Using omniauth 1.2.2
Using omniauth-oauth2 1.4.0
Using omniauth-google-oauth2 0.4.1
* Шляпы лба * Спасибо trh. Спасибо за информацию о secrets.yml, я не знал об этом, однако, я использую герою для производства, и быстрый поиск решений по героку, похоже, предлагает некоторые варианты включения ENV [...] в secrets.yml – ChristopherJ
У всех нас есть наши дни :) Если вы заинтересованы в использовании секретов с herkou, то рассмотрите figaro - есть задача rake, rake figaro: heroku - он позволяет вам выполнить настройку, которую вы в противном случае сделали бы в системе с окр. --- https://github.com/laserlemon/figaro – trh