サルでもわかるWEBプログラミング

フリーソフトのみでホームページ作成

ユーザ用ツール

サイト用ツール


13.vue.jsとfirebaseで認証つきボイスレコーダー:index.html


差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
13.vue.jsとfirebaseで認証つきボイスレコーダー:index.html [2019/01/09]
adash333 [src/Home.vueとsrc/Edit.vueの作成と、src/App.vueの編集によるログイン機能の実装]
13.vue.jsとfirebaseで認証つきボイスレコーダー:index.html [2019/05/11] (現在)
adash333 [方針をたてる]
行 26: 行 26:
  
 https://github.com/nabettu/firestore-manual https://github.com/nabettu/firestore-manual
 +
 +ソースコード
 +
 +https://codesandbox.io/s/zz65m3qyl4
 +
 +できたもの
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190110-095407.png}}
 +
 +デモサイト1 (Firebase認証を用いる場合は、デプロイ先のアドレスを、FirebaseのAuthenticationで『認証済みドメイン』に登録する必要があります。)
 +https://csb-zz65m3qyl4.netlify.com/
 +
 +デモサイト2
 +https://zz65m3qyl4.codesandbox.io
 +
 +<html>
 +<iframe src="https://codesandbox.io/embed/zz65m3qyl4" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin"></iframe>
 +</html>
  
  
行 46: 行 63:
 Vuetify Vuetify
 firebase firebase
-vue-spinner 
 moment moment
 </code> </code>
行 83: 行 99:
  
 これは、Firestore内の、/memos/フォルダ内で、認証された各ユーザーが、{user_id}/フォルダ内のデータを閲覧read, 編集writeできるように設定しています。 これは、Firestore内の、/memos/フォルダ内で、認証された各ユーザーが、{user_id}/フォルダ内のデータを閲覧read, 編集writeできるように設定しています。
 +
 +この後、さらに以下のように変更しました。
 +<code>
 +service cloud.firestore {
 +  match /databases/{database}/documents {
 +    match /recognitions/{user_id} {
 + allow read, write: if request.auth.uid == user_id;
 +    }
 +    match /notes/{user_id} {
 + allow read, write: if request.auth.uid == user_id;
 +    }
 +  }
 +}
 +</code>
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190110-095722.png}}
  
 ===== FirebaseでGoogle認証の有効化とドメイン追加 ===== ===== FirebaseでGoogle認証の有効化とドメイン追加 =====
行 128: 行 159:
 firebase firebase
 moment moment
-vue-spinner 
 </code> </code>
 {{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190108-234519.png}} {{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190108-234519.png}}
行 150: 行 180:
 {{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190109-170134.png}} {{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190109-170134.png}}
  
-===== src/components/Home.vueとsrc/components/Memo.vueの作成と、src/App.vueの編集によるログイン機能の実装 =====+===== src/components/Home.vueとsrc/components/Memo.vueの作成と、src/App.vueの編集によるログインの有無による表示するコンポーネントの切り替え機能の実装 =====
 最初に、ログイン機能を実装します。 最初に、ログイン機能を実装します。
  
行 167: 行 197:
 src/App.vueの編集し、isLoginがtrue or falseで、Home.vueとMemo.vueの表示を分けます。 src/App.vueの編集し、isLoginがtrue or falseで、Home.vueとMemo.vueの表示を分けます。
  
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190109-212004.png}}
  
 +===== ログイン関数googleLoginの実装と、ローディング表示の実装 =====
 +Home.vueでおログインボタンをクリックしたときに、googleLogin()関数が実行されて、google認証されるように設定します。
 +googleLogin()関数は、<script>内のmethods: {}の中に定義します。
  
 +src/components/Home.vue
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190109-212623.png}}
 +ログイン状態のチェックは、src/App.vueで行い、<script>内の、created: function() {}の中に記載します。
 +src/App.vue
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190109-213028.png}}
 +なお、google認証時に、Googleからuserというデータ(認証した人の名前などのデータ)をuserDataに格納しています。App.vue(親コンポーネント)からMemo.vue(子コンポーネント)にuserDataを渡すために、App.vueの<template>内に、
  
 +<Memo :user="userData">
  
 +と記載します。Memo.vue(子コンポーネント)で:userを受け取るときには、Memo.vueの<script>内で、
  
-参考:https://exhikkii.hatenablog.com/entry/2018/08/07/003023 +props["user"],
-2018-08-07 +
-Vueでloading indicatorを実装する+
  
 +として受け取ります。
  
-===== 新規Vue.jsアプリの作成、前回の部分まコードをコピペ =====+src/components/Memo.vue 
 +{{:13.vue.jsとfirebase認証つきボイスレコーダー:pasted:20190109-213807.png}}
  
-前回の<wrap hi>[[12.vue.jsとwebspeechapi音声識アプリ:|12.vue.jsとwebspeechapi音声識アプリ:]]</wrap>コードをコピペします。+(作成中、、、) 
 + 
 +===== 実行してみる ===== 
 + 
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190110-100325.png}} 
 + 
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190110-100421.png}} 
 + 
 +{{:13.vue.jsとfirebase認証つきボイスレコーダー:pasted:20190110-100507.png}} 
 +うまくいっているようです。必ずも音声入力しなくても、普通のメモとしても利用できます。 
 + 
 +===== ソースコード ===== 
 +ソースコード 
 + 
 +https://codesandbox.io/s/zz65m3qyl4 
 + 
 +できたもの 
 +{{:13.vue.jsとfirebaseで認証つきボイスレコーダー:pasted:20190110-095407.png}} 
 + 
 +デモサイト 
 +https://zz65m3qyl4.codesandbox.io 
 + 
 + 
 + 
 +<html> 
 +<iframe src="https://codesandbox.io/embed/zz65m3qyl4" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" sandbox="allow-modals allow-forms allow-popups allow-scripts allow-same-origin"></iframe> 
 +</html>
  
  
-作成中+===== 気になること =====
  
 +前回の<wrap hi>[[12.vue.jsとwebspeechapiで音声認識アプリ:|12.vue.jsとwebspeechapiで音声認識アプリ:]]</wrap>までのコードをコピペしようと思ったのですが、やり方がわかりませんでした。結局、データを1個追加したり削除するたびに、ローカルのnotesデータ(オブジェクト、連想配列)を更新して、そのnotesデータ全てを、Firestoreにアップロードしたり、ダウンロードしたりするコードになってしまいました。テキストなのでまあよいかもしれませんが、データ通信量が莫大になってしまうのが気になりますが、解決方法がわかりません。
 ===== 今回写経した本 ===== ===== 今回写経した本 =====
 Vue.js初めての方に非常にお勧めです。読みながら手を動かしてアプリが動くことを実感できて楽しいです。 Vue.js初めての方に非常にお勧めです。読みながら手を動かしてアプリが動くことを実感できて楽しいです。


13.vue.jsとfirebaseで認証つきボイスレコーダー/index.html.1547023891.txt.gz · 最終更新: 2019/01/09 by adash333