読者です 読者をやめる 読者になる 読者になる

cordova + phpでセッションを維持する方法

はじめに

本当は今、これについての具体的な実装例を書きたかったというか試してみたかったのですが無理そうなので、具体的な実装・実験は明日以降に行うとして理屈だけメモします。

まずcordovaアプリでセッション処理を行う場合、以下の様な環境になると思われます。
・アプリ本体はローカルhtml
apiはパブリックなサーバに

で、せっかくhtmlでアプリを実装するのでwebサイトを作る要領でセッションを使おうとしていました。が、ブラウザの仕様等でなかなか思った通りにいかず別の方法を検討しました。

webサイトの要領でセッションが使えない理由

・cors対策が面倒
safari(ios)でサードパーティのサーバにcookieを送信してくれない(@デフォルトの設定で)

今のところ調べたところ、この2点で悩んでいたのですが逆に無理してwebサイトと同じ事をしない方がスムーズにいくのではないかと思いました。
実際にネイティブアプリの開発者の人に聞いてみたところ、phpのセッションはつかってるそうで、けどcookieとかはつかえないのでどのように実装しているか聞いてみたところガラケー時代に使っていたurlパラメータにセッションidを付与する方法を使っているとのことでした。

で、言われてみるとこの実装が1番現実的なのかもと思いました。
最新のセッションidをクライアント側で保持して通信のたびにこれを送信。
セキュリティ上、セッションidは定期的に変更するべきなので無効になったセッションidは破棄して最新のセッションidをまた、クライアント側でも保存し直すという流れになります。

今まではいかにしてcookieを使ったセッション処理を実現しようか考えていたのですが、たしかにwebviewを用いないネイティブアプリではwebのようにcookieを使用してとかないだろうし、、、

とはいえsafariサードパーティのサーバにcookieを送信してくれれば(@デフォルトで)すべてスムーズにいったのかもしれませんが、そうでないようなのでセッションidをパラメータに埋め込む方法で実装するのが1番現実的な気がします。

というわけで実装例は書けなかったのですが、自分的には大きく前進したのでとりあえず書きました。明日以降、javascriptとhtmlで実際に実装してみたいと思います。

ちなみに今使ってるphpフレームワークfuelphpなのでcordova + fuelphpでハイブリッドアプリを実装すること目指しています

とりあえず本日は以上です