====== 181126 Googleアカウントでユーザ登録とログイン状態の判別 ====== [[z_blog:2018:181125_vue_install|181125 WindowsでVue.jsを始める]]の続いて、以下の本の写経をしていく。 [[https://amzn.to/2SeJXxX|改訂新版 Vue.jsとFirebaseで作るミニWebサービス (技術書典シリーズ(NextPublishing)) Kindle版]] ===== 開発環境 ===== Windows 8.1 Pro Node v8.12.0 vue-cli 2.9.6 firebase-tools 6.1.1 VisualStudioCode 2018/11月現在、実は、Vue-cliはVersion3(@vue/cli)が出ていたのですね。。。 今気づきました。 とりあえず、写経元の本の通りに、vue-cliでやっていこうと思います。 参考:https://cli.vuejs.org/guide/installation.html {{:z_blog:2018:pasted:20181125-231440.png}} ===== componentsの作成 ===== Googleアカウントでログインしていないときに表示するHome.vueと、ログインしているときに表示するEditor.vueを作成する。 src/ フォルダに、compnents/ フォルダを作成し、さらに、src/components/Home.vue ファイルを新規作成 src/components/Home.vue {{:z_blog:2018:pasted:20181125-232356.png}} 同様に、src/components/Editor.vue を新規作成 {{:z_blog:2018:pasted:20181125-232622.png}} ===== App.vueにHomeComponentとEditorComponentを表示 ===== ターミナルで npm run dev を入力し、サーバを起動しておく。 {{:z_blog:2018:pasted:20181125-232924.png}} src/App.vue (変更後) {{:z_blog:2018:pasted:20181125-233334.png}} ===== Firebaseでログインの設定 ===== FirebaseのConsole画面 https://console.firebase.google.com/ から、プロジェクト(今回の場合はmymarkdownプロジェクト)を開き、 Autehntication > ログイン方法 > Google をクリック {{:z_blog:2018:pasted:20181127-203209.png}} Googleタブが開くので、「有効にする」をONにして、プロジェクトのサポートメール を選択する。このメールアドレスはgmailしか選択できないらしい。しかも、ログイン認証画面でこのメールアドレスが公開されてしまうらしいので、サイトを公開する場合は、新しくgmailアドレスを登録し、そちらで新たにFirebaseプロジェクトを作成した方がよさそうです。 {{:z_blog:2018:pasted:20181127-203446.png}} 保存をクリックすると、Googleアカウントのところが、「有効」に変化していることが分かる。 {{:z_blog:2018:pasted:20181127-203908.png}} ===== Googleログインの実装 ===== src/components/Home.vue (変更前) {{:z_blog:2018:pasted:20181127-204015.png}} (変更後) {{:z_blog:2018:pasted:20181127-204251.png}} これで、「Googleアカウントでログイン」ボタンをクリックすると、以下のように画面遷移する。 (まだ、現時点では、Googleログイン後も、画面はHome.vueのままである。) {{:z_blog:2018:pasted:20181127-205513.png}} ===== ログイン状態に有無によるコンポーネント表示の選択 ===== src/App.vue (変更前) {{:z_blog:2018:pasted:20181127-210613.png}} (変更後) {{:z_blog:2018:pasted:20181127-210904.png}} 既にGoogleログインしているので、isLogin が true となり、画面にEdit.vueの内容が表示された。 なんか、Vue.jsは非常にシンプルだと感じました。 ===== コンポーネント間の情報の受け渡しとログイン情報の表示 ===== ログインユーザーの情報を画面に表示する。 App.vueが所有している「Googleログインユーザー情報」を、Editor.vueに渡して、表示する。 App.vue(データを送信する側)では、新しいdataを定義してユーザー情報を格納する。(さらに、