RailsでmixiのOAuth認証を行おうとしているのですが、セッションが取得できなくて困ってます。
ruby
1 def oauth_mixi 2 # server_stateの入手 3 consumer_key = "XXXXXXXXXXXXXXXXXXXXX" 4 query = "grant_type=server_state&client_id=" + consumer_key 5 6 consumer = OAuth::Consumer.new( "", "", { :site => "https://secure.mixi-platform.com" } ) 7 response = consumer.request( :post, '/2/token', nil, {}, query, { 'Content-Type' => 'application/x-www-form-urlencoded' }) 8 9 server_state = JSON.parse( response.body )['server_state'] 10 11 # 認可とAuthorization Codeの入手 12 url = "https://mixi.jp/connect_authorize.pl" 13 url += "?client_id=" + consumer_key 14 url += "&response_type=code" 15 url += "&scope=r_profile+r_updates" 16 url += "+r_voice+w_voice" # voice 17 url += "&server_state=" + server_state 18 19 # sessionにserver_stateを保存 20 session[:_server_state] = server_state 21 22 puts "request.session_options[:id] = " + request.session_options[:id].to_s 23 puts "session[:_server_state] = " + session[:_server_state].to_s 24 25 redirect_to url 26 return 27 end 28 29 def oauth_callback_mixi 30 puts "request.session_options[:id] = " + request.session_options[:id].to_s 31 puts "session[:_server_state] = " + session[:_server_state].to_s 32 end
これを行うと出力は
Started GET "/oauth_mixi" for ::1 at 2017-02-28 08:57:42 +0900 Processing by MixiController#oauth_mixi as HTML request.session_options[:id] = ac5bac1a6f0d01cad0302a72029cc9f4 session[:_server_state] = PnrbWgJTJLNZ2rUZjT_CuMFxoR8z04CAxgXjVRlHCBE Started GET "/oauth_callback_mixi?code=xxxxxxxxxxxxxxxxxxxxxxxx" for 127.0.0.1 at 2017-02-28 08:57:48 +0900 Processing by MixiController#oauth_callback_mixi as HTML Parameters: {"code"=>"xxxxxxxxxxxxxxxxxxxxxxxx"} request.session_options[:id] = session[:_server_state] =
となり、oauth_callback_mixi内でsessionの値が取得できていません(nilになっています)。
どうやらセッションは維持されてるようなのですが、oauth_callback_mixiアクションでのみセッション情報が取得できません。
memcached&dalliを使用していますが、特定のアクションでのみセッションが取得できないというケースとはどのような事が考えられるのでしょうか?
あなたの回答
tips
プレビュー