2013-06-30 2 views
1

Как мне обрабатывать, когда пользователь выбирает отменять вход в мое приложение с помощью linkedin?Omniauth linkedin with Sinatra/auth/linkedin/callback? Oauth_problem = user_refused

Когда я ударил отменить я перенаправлен к следующему URL-адресу: LOCALHOST: 9393/Идент// обратный вызов к LinkedIn oauth_problem = user_refused

который отображает следующее сообщение об ошибке: OAuth :: Проблема в/авт/linkedin/callback parameter_absent

Я просто хочу перенаправить пользователя на домашнюю страницу, если они решили отменить вход в систему, используя Linkedin.

# ************************************************ 
# Oauth using Omniauth methods 
# ************************************************ 

%w(get post).each do |method| 
    send(method, "/auth/:provider/callback") do 
     "<pre>" + env['omniauth.auth'].inspect + "</pre>" 
    end 
end 


ENV['LINKEDIN_CONSUMER_KEY'] = "xxxxxxx" 
ENV['LINKEDIN_CONSUMER_SECRET'] = "xxxxxxxx" 

use OmniAuth::Builder do 
    provider :linkedin, ENV['LINKEDIN_CONSUMER_KEY'], ENV['LINKEDIN_CONSUMER_SECRET'], :scope => 'r_fullprofile+r_emailaddress+r_network', :fields => ["id", "email-address", "first-name", "last-name", "headline", "industry", "picture-url", "public-profile-url", "location", "connections"] 

end 

get '/auth/failure' do 
    flash[:notice] = params[:message] # if using sinatra-flash or rack-flash 
    redirect '/' 
end 

ответ

0

На применении рельсы, я решил такую ​​же проблему, поставив следующий в моей конфигурации/инициализаторах/omniauth.rb. Обратите внимание, что я обращаю к определенному маршруту для AUTH неудач, так что я могу дать некоторые намеки на входе с Linkedin:

OmniAuth.config.on_failure do |env| 
    message_key = env['omniauth.error.type'] 
    origin_query_param = env['omniauth.origin'] ? "&origin=#{CGI.escape(env['omniauth.origin'])}" : "" 
    strategy_name_query_param = env['omniauth.error.strategy'] ? "&strategy=#{env['omniauth.error.strategy'].name}" : "" 
    extra_params = env['omniauth.params'] ? "&#{env['omniauth.params'].to_query}" : "" 
    new_path = "/auth_failure?message=#{message_key}#{origin_query_param}#{strategy_name_query_param}#{extra_params}" 
    Rack::Response.new(["302 Moved"], 302, 'Location' => new_path).finish 
end 

Найдено ли это более подробная информация здесь: How to rescue OmniAuth::Strategies::OAuth2::CallbackError?

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