OmniAuth Twitterを使ったツイッター認証(認可)状況確認

SinatraでTwitterのWebアプリを作るための学習1 - 別館 子子子子子子(ねこのここねこ) では

まず twitter oauth example を使ってみます。

としてそのスクリプトのリーディングも行いました。

ツイッター認証メソッド

ツイッター認証されているかどうかを返す logged_in? メソッドは

  def logged_in?
    session[:twitter_oauth]
  end

と定義されています。 session[:twitter_oauth] というのは

get '/auth/twitter/callback' do
  session[:twitter_oauth] = env['omniauth.auth'][:credentials]
 :
end

つまり、認証後のコールバックで登録されたハッシュ値が存在すればツイッター認証されている、という流れで定義されています。

修正したい

ただ、このような作り方ですので、コールバック直後には logged_in? メソッドが使えません。では他の確認方法は無いか?で、探してみると、ツイッター認証されていれば session[:oauth]['twitter']['callback_confirmed'] に true が入ります。ので、これに基づいて作成してみました。

helpers do
  def logged_in?
    return false unless session[:oauth] && session[:oauth]['twitter']
    session[:oauth]['twitter']['callback_confirmed'] 
  end
end