ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

callbackしたら、sessionが切れた

TwitterOauth認証を実装していてつまずいたのでその話

sessionが保てない

Java servletとTwitter4jを利用して、TwitterOauth認証を実装しようと思い
githubに上がっているTwitter4jのサンプルを見ながら実装していたら

f:id:yuzu441:20141102210825p:plain

???

は??

なんでNullPointer?


Chromeデベロッパツール開いて
session storage見たら何もないんだけどなんで

sessionの名前一覧をfor分で回しても何もないなんでや( ´・ω・`)

何がダメだったか

login: 0:0:0:0:0:0:0:1
callback: 127.0.0.1

結論から言っちゃうとこれでした

localhost:8080でアクセスしてたんだけど
名前解決したらipv6になっちゃってた

twitterのcallback urlにはlocalhostを指定できないので
127.0.0.1にしてたんだけど、まさかipv6になってたとは

ipv6からipv4のアドレスにcallbackしてたから
別ホストとして扱われて、sessionが切れてしまいました

結局、hostsファイルにドメイン勝手に作って
それをcallback urlに自作したドメイン設定して解決しました
(セキュリティ的にはダメです)


これで1日悩みました。。。
最初からrequest.getRemoteAddr()でipアドレス取得しとけばよかった

最後に

ipv6になってたから
twitterのcallback urlをipv6にしようと思ったら、なぜか設定できなかった

もしかしてcallbackurlはipv6対応してないのか???