Cookie を「セッション」タイプから「永続」タイプに変更する必要があります。さらに、「omniauth-facebook」と連携させる必要があります。以下の例では、すべてがうまく機能していますが、omniauth を使用すると、Cookie がまったく設定されません。これは私が書いたテストコードです:
「ルビジェム」が必要 「シナトラ」が必要 「encrypted_cookie」が必要 「omniauth-facebook」が必要 Rack::Session::EncryptedCookie を使用、:secret => "fdstopitot9dasdsdasjm4kmt0èu54cmjff83d2'el.4j9c" OmniAuth::Builder を使用する プロバイダー: フェイスブック、「290594154312564」、「a26bcf9d7e254db82566f31c9d72c94e」 終わり get "/" する 「持続 | セッション | /auth/facebook」 終わり get "/persistent" do response.set_cookie 'test', {:value=> "persistent", :max_age => 2592000.to_s} リダイレクト「/」 終わり get "/session" do response.set_cookie 'テスト', {:値=> "セッション"} リダイレクト「/」 終わり get '/auth/:provider/callback' do response.set_cookie 'test', {:value=> "facebook_callback"} リダイレクト「/」 終わり
をクリックする/session
か/persistent
、それに応じて Cookie が変化するのを確認できます (Chrome では、F12 > Resources > Cookies > localhost で Cookie を確認できます)。
代わりに/auth/facebook
Cookie をクリックしても、まったく設定されません。
応答ヘッダーは問題ないようです (Chrome では、F12 > Network > header で http 応答ヘッダーを確認できます)。Chromeでのみテストしました。
HTTP/1.1 302 一時的に移動 X フレーム オプション: SAMEORIGIN 場所: http://localhost:4567/ X-XSS-保護: 1; モード=ブロック コンテンツ タイプ: text/html;charset=utf-8 コンテンツの長さ: 0 セット Cookie: test=facebook_callback セット Cookie: rack.session=X8U8kupLYzIurjMS4pSCQfF%2BzPpjQhJMqyMd84o8BQdQLwmhagL1UkZ4oi7%2F%0A9bEN%2B0FZDDUAeQD%2BRizczwvepQi%2FbcMwaAjpkFcXhiWuJPQ%3D%0A; パス=/ X-Content-Type-Options: nosniff 接続: キープアライブ サーバー: thin 1.5.1 コードネーム Straight Razor
どんな手掛かり?