を使用して単純な FacebookCanvas
スタイルのアプリを構築していSinatra
ます。
自分のマシンでローカルに実行すると、アプリは正常に動作します。しかし、それを押し上げるとHeroku
、セッションが一致しないという問題が発生し、ページのリロードが行われたときに /callback によってセッションに配置されたデータが存在しません。
問題は、 で実行しているときにHeroku
、ファンシーな負荷分散が挿入されるため、ページのリロードと、ユーザーの ID がセッションに保存されるrequest.env['REMOTE_HOST']
Facebook との間で が異なるようです。callback
いくつかの (編集された) ロギングは、これを明確に示しています。
Heroku の場合 (リモート ホストが異なるため、セッション ID が異なることに注意してください)
X9.1XX.XX1.XX - - [23/Aug/2012 03:27:42] "POST / HTTP/1.1" 200 1878 0.0235
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Handling request from host ip-10-92-97-233.ec2.internal
DEBUG -- : Session ID: 39960b607fd7c1150791d4d42d6633b3b2a5b18e79e742f67d8f677f139dbca8
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Set session['oauth'] : Koala::Facebook::OAuth
DEBUG -- : Session id: 39960b607fd7c1150791d4d42d6633b3b2a5b18e79e742f67d8f677f139dbca8
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Session ID: 39960b607fd7c1150791d4d42d6633b3b2a5b18e79e742f67d8f677f139dbca8
DEBUG -- : Completed request from host ip-10-92-97-233.ec2.internal
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
X9.1XX.XX1.XX - - [23/Aug/2012 03:27:46] "GET /login HTTP/1.1" 302 - 0.0178
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Handling request from host ip-10-94-82-253.ec2.internal
DEBUG -- : Session ID: 20200e42add5ec9bfe12b225502c7449dda6e8ab06dd3fbe204239db0e21de89
DEBUG -- : ---------------------------------------------------------
ERROR -- : Could not find oauth key in session 20200e42add5ec9bfe12b225502c7449dda6e8ab06dd3fbe204239db0e21de89
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Session ID: 20200e42add5ec9bfe12b225502c7449dda6e8ab06dd3fbe204239db0e21de89
DEBUG -- : Completed request from host ip-10-94-82-253.ec2.internal
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
X9.1XX.XX1.XX - - [23/Aug/2012 03:27:48] "GET /callback?code=AQCs… …vxkEI76cq32juk HTTP/1.1" 302 - 0.0014
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Handling request from host ip-10-125-37-231.ec2.internal
DEBUG -- : Session ID: a94f5f36b44e5891657982248d1304e265f9619bdcdc37b648879e5a12a0fe5b
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Session ID: a94f5f36b44e5891657982248d1304e265f9619bdcdc37b648879e5a12a0fe5b
DEBUG -- : Completed request from host ip-10-125-37-231.ec2.internal
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
ローカル (これは機能します。同じホストと一致するセッション ID に注意してください)
X9.1XX.XX1.XX - - [23/Aug/2012 13:56:22] "POST / HTTP/1.1" 200 1878 0.0279
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Handling request from host ppp12345.static.someprovider.net
DEBUG -- : Session ID: 892e6ec515afde6f463102f83d373523bba62b26180a2e5a34a4945c787eacfd
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Set session['oauth'] : Koala::Facebook::OAuth
DEBUG -- : Session id: 892e6ec515afde6f463102f83d373523bba62b26180a2e5a34a4945c787eacfd
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Session ID: 892e6ec515afde6f463102f83d373523bba62b26180a2e5a34a4945c787eacfd
DEBUG -- : Completed request from host ppp12345.static.someprovider.net
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
X9.1XX.XX1.XX - - [23/Aug/2012 13:56:31] "GET /login HTTP/1.1" 302 - 0.0079
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Handling request from host ppp12345.static.someprovider.net
DEBUG -- : Session ID: 892e6ec515afde6f463102f83d373523bba62b26180a2e5a34a4945c787eacfd
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Session ID: 892e6ec515afde6f463102f83d373523bba62b26180a2e5a34a4945c787eacfd
DEBUG -- : Completed request from host ppp12345.static.someprovider.net
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
X9.1XX.XX1.XX - - [23/Aug/2012 13:56:34] "GET /callback?code=AQCs… …vxkEshwXTPMC8lnaY9FU HTTP/1.1" 302 - 1.4674
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Handling request from host ppp12345.static.someprovider.net
DEBUG -- : Session ID: 892e6ec515afde6f463102f83d373523bba62b26180a2e5a34a4945c787eacfd
DEBUG -- : ---------------------------------------------------------
DEBUG -- : {"username"=>"davesag", "verified"=>true, "updated_time"=>"2012-08-20T23:41:41+0000"}
DEBUG -- : ---------------------------------------------------------
DEBUG -- : Session ID: 892e6ec515afde6f463102f83d373523bba62b26180a2e5a34a4945c787eacfd
DEBUG -- : Completed request from host ppp12345.static.someprovider.net
DEBUG -- : ---------------------------------------------------------
DEBUG -- : ---------------------------------------------------------
問題は、Heroku にセッションを統合して Cookie が適切に移動し、一致するように指示するにはどうすればよいかということです。