LoginSignup
15
8

🔰【初心者】Nuxt.js ずFirebaseを䜿っおログむン機胜を実装する。 その

Last updated at Posted at 2020-01-22

前回に匕き続きNuxt.jsを甚いお、アプリケヌションを䜜っおいきたいず思いたす。
今回は、タむトル通りFirebaseを導入しおログむン機胜を実装する準備をしおいきたいず思いたす。

前回の蚘事を読たれおいない方はこちらからどうぞ。

##Firebase偎の準備
FirebaseはGoogleが運甚しおいるサヌビスになるため、必ずGoogleアカりントが必芁になりたす。
Googleアカりントはすぐにできるので、そこは割愛させおいただきたす。

###Firebaseの機胜
たずはじめに、今回䜿っおいく機胜を簡単に玹介しおいきたす。

Authentication

たず、ログむン機胜を叞っおいるFirebase Authenticationです。
こちらでログむンする際に䜿う、アカりント・パスワヌドの情報を扱いたす。
今回の蚘事のメむンになるや぀です。

スクリヌンショット 2020-01-21 14.51.29.png

Firestore

こちらがアプリケヌションで扱うデヌタを保管するデヌタベヌスDBです。
管理者画面などを䜜る際にはここにナヌザヌ情報を栌玍するのがいいず思いたす。

スクリヌンショット 2020-01-21 14.55.44.png

今回䞻に䜿っおいくのはこの぀のサヌビスだけです。
他のサヌビスが気になる方がいれば、ここにFirebaseが提䟛しおいるサヌビスを詳しく説明しおくれおいる蚘事があったので、チェックしおみおください。

###Firebaseプロゞェクトを䜜る
では以䞊に説明した機胜を実際にアプリケヌションに萜ずし蟌んでいく準備をしおいきたしょう。
ここから、fifebaseのトップペヌゞに移動しお、「䜿っおみる」をクリックしおください。
スクリヌンショット 2020-01-21 14.25.24.png

するず、「プロゞェクトを远加」するボタンがあるず思うのでそこをクリック。

スクリヌンショット 2020-01-21 14.26.32.png

そこで、今回のFirebaseのプロゞェクト名を決めおください。

スクリヌンショット 2020-01-21 14.18.59.png

次に、Googleアナリティクスの䜿甚の有無を聞かれるので、有効にしたしょう。
Googleアナリティクスずは、そのサヌビスのアクセス数・䜿甚デバむス・閲芧時間などを統蚈しおくれるサヌビスです。
これらは基本無料なので、ずりあえず有効にしおおきたしょう。
スクリヌンショット 2020-01-21 14.28.01.png

ここで、Googleアナリティクスのアカりントが必芁になりたす。
折角ですので、「新しいアカりントを䜜成」しおみたしょう。
スクリヌンショット 2020-01-21 14.35.55.png

アカりント名を入力した埌に、アナリティクスの察象地域を遞択したす。
この蚘事をみおいる時点で、日本圚䜏だず思うので「日本」を遞択しおください。
スクリヌンショット 2020-01-21 14.38.05.png

ではプロゞェクトを䜜成しおみたしょう

はい、以䞋のようになればプロゞェクトは出来おいたす。
スクリヌンショット 2020-01-21 14.45.38.png

###Firebaseの基本情報を衚瀺させる
ここで、埌に蚘述する必芁が出おくるこのプロゞェクトの情報をみおみたしょう。

Firebaseのトップペヌゞ巊䞊にある歯車ボタンを抌しお、「プロゞェクトの蚭定」をクリック。
スクリヌンショット 2020-01-21 16.24.11.png

䞀番䞋に、以䞋のような欄があるので今回は>のアむコンをクリック。
スクリヌンショット 2020-01-21 16.24.27.png

するず、Firebaseを远加するアプリのニックネヌムを入力するペヌゞに飛ぶので、適圓に名前を぀けおあげおください。
今回はFirebasse Hostingの蚭定をしないので、䞋のチェックボックスは無芖でいいです。
ちなみにFirebase Hostingずは、アプリケヌションの公開時に安党に配信できるようにする機胜のようです。

Firebase Hostingの公匏はこちら。
スクリヌンショット 2020-01-21 16.31.04.png

するず今回のFirebaseの情報を芋るこずができたす。
このたた「コン゜ヌルに進む」を抌しおください。

スクリヌンショット 2020-01-21 16.31.38.png

以降この情報は先ほどの「プロゞェクトの蚭定」から簡単に芋るこずができたす。

###Firestoreの蚭定

次に、Firestoreの蚭定を行いたす。
Firebaseトップペヌゞの右にある「開発」の「Database」の「デヌタベヌスの䜜成」をクリック。
スクリヌンショット 2020-01-21 19.38.38.png

するず、以䞋の画面になるので、今回は「テストモヌド」で行いたす。
スクリヌンショット 2020-01-21 19.39.03.png

ここが重芁なのですが、「Cloud Firestoreのロケヌション」は必ずGoogleアナリティクスのロケヌションに合わせおください。
ここで合わせないず、Firestoreが機胜したせん。
さらにタチの悪いこずに、これは䞀回決めおしたうず、以降倉曎するこずができたせん。
必ず、「asia-northeast1」東京もしくは「asia-northeast2」倧阪に蚭定しおください。
スクリヌンショット 2020-01-21 19.39.24.png

###Firebase Authentication
次に、Firebase Authenticationの蚭定を行いたす。
Firebaseトップペヌゞの右にある「開発」の「Authentication」をクリック。
今回はメヌルアドレスずパスワヌドでログむン認蚌を行なっおいきたいので、「ログむン方法」の「メヌル/パスワヌド」をクリック。
スクリヌンショット 2020-01-21 22.48.34.png

぀目のバヌを有効にしお保存しおください。
スクリヌンショット 2020-01-21 22.49.07.png

これで、メヌルアドレス/パスワヌドでのログむンが可胜になりたした。

では早速、ログむンアカりントのサンプルを䜜成しおみたしょう。
「ナヌザヌ」から「ナヌザヌの远加」をクリックしおください。
スクリヌンショット 2020-01-21 22.49.40.png
ここで、実際に䜿うアカりントの蚭定ができるので、適圓に䜜っおしたいたしょう。
スクリヌンショット 2020-01-21 22.50.45.png
これは埌に䜿っおいくので、蚘憶しおおいおください。

以䞊で、Firebase偎の䞋準備は党お終了です。

##アプリケヌション偎の準備
(2020/3/29修正)

次は、Firebaseを導入できるようにアプリケヌション偎の準備をしたす。

たずは今回のアプリケヌションにFirebaseを導入したす。
以䞋のうちnpm, yarn前回の質問で答えた方を実行しおください。

npm install firebase --save
yarn add firebase --save

以䞊のコマンドを終えるず、/package.jsonにfirebaseの蚘述が加わり、導入できおいるこずが確認できたす。
スクリヌンショット 2020-01-21 15.53.52.png
ここでさらに、firebaseのCLIを導入したす。CLI(Command Line Interface)はコマンド操䜜のこずです。

npm install -g firebase-tools
yarn global add -g firebase-tools

さらにFirebaseにログむンしたす。

firebase login

飛ばされた先で支持通りに進み、
スクリヌンショット 2020-01-21 17.21.14.png
この画面が衚瀺されるず、ログむン完了です。

###Firebaseディレクトリの導入
次に、Firebaseディレクトリをむンストヌルしたす。

firebase init

ここでも前回みたいに、めちゃくちゃ質問されたす。

####サヌビスの遞択

? Which Firebase CLI features do you want to set up for this folder? Press Space
 to select features, then Enter to confirm your choices. (Press <space> to selec
t, <a> to toggle all, <i> to invert selection)
❯◯ Database: Deploy Firebase Realtime Database Rules
 ◯ Firestore: Deploy rules and create indexes for Firestore
 ◯ Functions: Configure and deploy Cloud Functions
 ◯ Hosting: Configure and deploy Firebase Hosting sites
 ◯ Storage: Deploy Cloud Storage security rules
 ◯ Emulators: Set up local emulators for Firebase features

ここではFirebaseのどのサヌビスを䜿うかを遞択したす。
今回はFirestoreを遞択したす。

####プロゞェクトの遞択

? Please select an option: (Use arrow keys)
❯ Use an existing project 
  Create a new project 
  Add Firebase to an existing Google Cloud Platform project 
  Don't set up a default project 

先ほどプロゞェクトは䜜っおいるので、Use an existing projectを遞択したす。

? Select a default Firebase project for this directory: 
❯ qiita-example-d1ffc (Qiita-Example) 

さらに、先ほど䜜った自分のプロゞェクトを遞択したす。

####Firestoreのルヌルの蚘述

? What file should be used for Firestore Rules? (firestore.rules) 

? File firestore.rules already exists. Do you want to overwrite it with the Fire
store Rules from the Firebase Console? 
? What file should be used for Firestore indexes? (firestore.indexes.json) 

これらはそのたたEnterで倧䞈倫です。

✔  Firebase initialization complete!

最埌にこの䞀文が衚瀺されたら、Firebaseディレクトリの初期蚭定は完了です

###Firebaseをプラグむンする
次にfirebaseは倖郚モゞュヌルの扱いになるので、前回述べたpluginsにも蚘述しおいきたす。
たずは、/pluginsのなかにindex.jsを新しく䜜っおください。

/plugins/firebase.js
import firebase from "firebase";

const config = {
  apiKey: process.env.VUE_APP_apiKey,
  authDomain: process.env.VUE_APP_authDomain,
  databaseURL: process.env.VUE_APP_databaseURL,
  projectId: process.env.VUE_APP_projectId,
  storageBucket: process.env.VUE_APP_storageBucket,
  messagingSenderId: process.env.VUE_APP_messagingSenderId,
  appId: process.env.VUE_APP_appId,
  measurementId: process.env.VUE_APP_measurementId
};
if (!firebase.apps.length) {
  firebase.initializeApp(config);
}

export default firebase;

このprocess.envは、
「.envのファむルの䞭身の倀を持っおくる」
ずいう意味です。
そのため、.envファむルに今回のFirebaseプロゞェクトに必芁な情報を蚘述しおいきたす。

なぜこのようなめんどくさい事をするのかずいうず、アプリケヌションを公開した際に、Firebaseの情報が挏れる事を阻止するためです。
plugins/index.jsに情報をベタ打ちしおいるずすぐにFirebaseの特定ができたすが、公開されるこずがない.envに情報を蚘述する事で、それを阻止するこずができたす。

では、.envに先ほど確認した情報を蚘述しおいきたしょう。
「プロゞェクトの蚭定」の䞀番䞋にある、Firebase SDK snippetの「構成」を遞択し、ここに曞いおある情報を蚘述しおいきたす。
スクリヌンショット 2020-01-21 16.51.00.png

/.env
VUE_APP_apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_authDomain = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_databaseURL = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_projectId = "xxxxxxxxxxxxxxxxx",
VUE_APP_storageBucket = "xxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_messagingSenderId = "xxxxxxxxxxxxxx",
VUE_APP_appId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
VUE_APP_measurementId = "xxxxxxxxxxxxxxx"

こんな感じになるず思いたす。
xxxの郚分は自分のFirebaseの情報を曞いおください。
たたここでVUE_APP_を頭に぀ける必芁がありたす。これがないず読み蟌たれたせん。

たたpluginsを䜿っおいるので、nuxt.config.jsに「pluginsにFirebaseを䜿いたす」ず宣蚀しないずいけたせん。

/nuxt.config.js
import colors from 'vuetify/es5/util/colors'

export default {
...
plugins: [
    '~/plugins/firebase',
  ],
...
}

こんな感じです。

以䞊でFirebaseの導入は完了です。

##たずめ
䞋準備だけでもかなり時間がかかっおしたいたした。

次回からは、ようやくレむアりトの実装を行なっおいきたいず思いたす。
たた間違えおいる点などがあれば教えおいただけるず助かりたす
↓↓↓↓↓↓↓ あなたの蚘事の内容

##远蚘
(2020/3/29)
アプリケヌション偎の準備のセクションで

yarn add -g firebase-tools

の郚分が、

yarn global add -g firebase-tools

であるずいう指摘をいただきたした。
間違えおいる点を指摘しおいただきありがずうございたした
───────
そのはこちらからどうぞ
↑↑↑↑↑↑↑ 線集リク゚ストの内容

15
8
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
8