Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
An example sinatra omniauth client app
$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>
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
@giuliano108
Copy link

giuliano108 commented Jan 30, 2012

Isn't this missing a session[:authenticated] = true, in the callback?

@gorenje
Copy link

gorenje commented Jun 8, 2012

i need to include some more gems and redo the application run statement and then it worked for me

==> https://gist.github.com/2895009/87ca24478ee19eb7bfa557b98221a177d714e16c

@molinojopiento
Copy link

molinojopiento commented Dec 5, 2013

Beautiful!

@keisei1092
Copy link

keisei1092 commented Feb 24, 2017

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment