ruby 一个示例sinatra omniauth客户端应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 一个示例sinatra omniauth客户端应用程序相关的知识,希望对你有一定的参考价值。

source :rubygems

gem 'sinatra'
gem 'json'
gem 'omniauth'
gem 'omniauth-oauth2'
gem 'omniauth-github'
# gem 'omniauth-att', :path => File.expand_path("./../../omniauth-att", __FILE__)

gem 'thin'
group :development do
  gem 'shotgun'
end
$LOAD_PATH.unshift(File.dirname(__FILE__))
require "rubygems"
require 'example_omniauth_app'

run SinatraApp
require 'rubygems'
require 'sinatra'
require 'json'
require 'omniauth'
require 'omniauth-github'
require 'omniauth-facebook'
require 'omniauth-twitter'
#TODO require 'omniauth-att'

class SinatraApp < Sinatra::Base
  configure do
    set :sessions, true
    set :inline_templates, true
  end
  use OmniAuth::Builder do
    provider :github, 'ece9da5a3cff23b3475f','eb81c6098ba5d08e3c2dbd263bf11de5f3382d55'
    provider :facebook, '290594154312564','a26bcf9d7e254db82566f31c9d72c94e'
    provider :twitter, 'cO23zABqRXQpkmAXa8MRw', 'TwtroETQ6sEDWW8HEgt0CUWxTavwFcMgAwqHdb0k1M'
    #provider :att, 'client_id', 'client_secret', :callback_url => (ENV['BASE_DOMAIN']

  end
  
  get '/' do
    erb "
    <a href='http://localhost:4567/auth/github'>Login with Github</a><br>
    <a href='http://localhost:4567/auth/facebook'>Login with facebook</a><br>
    <a href='http://localhost:4567/auth/twitter'>Login with twitter</a><br>
    <a href='http://localhost:4567/auth/att-foundry'>Login with att-foundry</a>"
  end
  
  get '/auth/:provider/callback' do
    erb "<h1>#{params[:provider]}</h1>
         <pre>#{JSON.pretty_generate(request.env['omniauth.auth'])}</pre>"
  end
  
  get '/auth/failure' do
    erb "<h1>Authentication Failed:</h1><h3>message:<h3> <pre>#{params}</pre>"
  end
  
  get '/auth/:provider/deauthorized' do
    erb "#{params[:provider]} has deauthorized this app."
  end
  
  get '/protected' do
    throw(:halt, [401, "Not authorized\n"]) unless session[:authenticated]
    erb "<pre>#{request.env['omniauth.auth'].to_json}</pre><hr>
         <a href='/logout'>Logout</a>"
  end
  
  get '/logout' do
    session[:authenticated] = false
    redirect '/'
  end

end

SinatraApp.run! if __FILE__ == $0

__END__

@@ layout
<html>
  <head>
    <link href='http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css' rel='stylesheet' />
  </head>
  <body>
    <div class='container'>
      <div class='content'>
        <%= yield %>
      </div>
    </div>
  </body>
</html>

以上是关于ruby 一个示例sinatra omniauth客户端应用程序的主要内容,如果未能解决你的问题,请参考以下文章

将 Ruby Sinatra 的 ADAL 示例映射到 Active Directory

使用 Ruby 2.7 读取 Keycloak OmniAuth::AuthHash 元素

ruby 最简单的OmniAuth开发人员策略实现(OmniAuth :: Strategies :: Developer)。 http://www.rubydoc.info/github/intri

ruby 具有RoleModel,Omniauth和Gravatar的用户类

Ruby on rails omniauth-twitter 和设计

Sinatra / Warden / Ruby - 如何确保我的用户只能使用单个会话登录?