cordova開発でのログイン実装について考えたメモ
やりたいこと
・アプリ内にemailとpasswordでのログインフォームを設ける。
・ログインボタンを押すとサーバ側でアカウントをチェックしてokならphpのセッションにログイン情報を保持。以降ログインしてる人のみが使えるapiのチェックはサーバ側のログインセッションで行う。
・次回アプリ起動時もログイン状態を保持したい(というか再度ログインフォームを入力させたくない)
実装方法について考える
まず、cordova内包のローカルhtmlからサーバへajaxなどでapiをたたく際に、サーバ側でphpセッションが使えるのかというのが懸念でした。自分の認識ではcorsを有効にすればブラウザからcookieを送信してくれて、サーバ側でもwebサイトをつくる様な形で実装できると思っていたのですがそう簡単にはいきませんでした、、、
実機で試したわけではないのですが、androidでは上記の方法で上手くいきそう。けどiphoneのsafariだとそれだけでダメそう。iphone>safariの設定をみると「COOKIEとWEBサイトのデータ」という項目があるのだが
1. 常にブロック
2. アクセス中のWebサイトのみ許可
3. 訪問したWebサイトを許可
4. 常に許可
とうい4項目があるのだが、デフォルトで3にチェックがついているためだ。これを実装するためには1度apiが設置してあるドメイン(サイト)を訪れてもらう必要がある。
で、ちょっと調べてみるとcordovaにinappbrowserというアプリ内包のブラウザがあるのだがこれを使えばなんとかできそう。アプリインストール時の初回だけはかならず特定のページ(説明ページでもなんでもいい)を見てもらう様なフローにしてしまうとかでいけるかな
けど、googleアナリティクスはそんなことしてないと思うが、おそらくcookieとか抜けてるはずだし、、、やり方があるのだろうか
emailとpasswordを端末のストレージに保存しておいて起動時は裏側で勝手にログイン認証するとかでもいけそうな気はするが、facebookやtwitterアカウントでのソーシャルログインを実装する場合など考えるとそれだと厳しそう、、、毎回ログインボタン押させるのもちょっとあれだし
やっぱりwebサイトで使ってるようにcookieを使いこなせるかもう少し調べて次回実装例をのせることができればと思います
うーん、みんなどうやってるのだろう。優しい方教えてください
以上です