0

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/facebookCookie をクリックしても、まったく設定されません。

応答ヘッダーは問題ないようです (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

どんな手掛かり?

4

1 に答える 1

0

これは簡単な問題でした。Cookie へのパスを追加するだけです: response.set_cookie 'test', {:value=> "facebook_callback", :path => "/"}

気がつかなかったのは、「/」へのリダイレクトがあるため、Chrome ではパス「/」の Cookie しか表示されませんでした。リダイレクトを削除すると、「test」という名前の 2 つの Cookie があることに気付きました。1 つは "/" パスで、もう 1 つは "/auth" パスです。

于 2013-10-01T09:18:40.743 に答える