FirebaseのAuthenticationを利用すると簡単に認証処理を実装できます。ここでは、Node.jsで Firebase JavaScript SDK
を利用して認証処理の動作確認を行います。
目次
プロジェクトを作成
Firebaseのコンソール画面にアクセスします。
https://console.firebase.google.com/
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_1.png)
プロジェクトを追加
をクリックします。
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_2.png)
プロジェクト名を入力します。
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_3.png)
プロジェクトを作成
をクリックします。
アプリを登録
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_app_1.png)
今回はウェブアプリを追加します。
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_app_2.png)
ここのConfig情報を実装時に利用するのでメモしておきます。
ログイン方法を設定
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_auth1.png)
Authentication
を選択します。
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_auth2.png)
まだユーザーはいません。
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_auth3.png)
メール/パスワード
によるログインを有効にします。
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_auth4.png)
他にもGoogle
Facebook
などのログイン方法が提供されています。
実装 & 動作確認
Node.jsで実装して動作確認します。
SDKをインストール
npm i --save firebase
ユーザー作成
- initializeApp
- createUserWithEmailAndPassword
signUp.js
に以下処理を記述します。
(async () => {
try {
const firebase = require('firebase')
const email = process.argv[2]
const password = process.argv[3]
const config = {
apiKey: 'コンソール画面で確認',
authDomain: 'コンソール画面で確認',
}
firebase.initializeApp(config)
await firebase.auth().createUserWithEmailAndPassword(email, password)
console.log('Success')
} catch (err) {
console.log(`Error: ${JSON.stringify(err)}`)
}
})()
実行してみます。
$ node signUp.js test1@example.com xxxxxxx
Success
![](http://www.wakuwakubank.com/wp-content/uploads/709-firebase-authentication_done.png)
コンソール画面からユーザーが作成されたことを確認できます。
もう1度、同じメールアドレスで実行するとエラーになります。
$ node signUp.js test1@example.com xxxxxxx
Error: {"code":"auth/email-already-in-use","message":"The email address is already in use by another account."}
ログイン・更新・ログアウト
- initializeApp
- signInWithEmailAndPassword
- currentUser
- updateProfile
- signOut
auth.js
に以下処理を記述します。
(async () => {
try {
const firebase = require('firebase')
const email = process.argv[2]
const password = process.argv[3]
const config = {
apiKey: 'コンソール画面で確認',
authDomain: 'コンソール画面で確認',
}
firebase.initializeApp(config)
let user
console.log('### currentUser')
user = firebase.auth().currentUser
console.log(user)
console.log()
console.log('### signInWithEmailAndPassword')
await firebase.auth().signInWithEmailAndPassword(email, password)
console.log()
console.log('### currentUser')
user = firebase.auth().currentUser
console.log(`displayName: ${user.displayName}`)
console.log(`emal: ${user.email}`)
console.log(`emailVerified: ${user.emailVerified}`)
console.log(`uid: ${user.uid}`)
console.log()
console.log('### updateProfile')
await user.updateProfile({ displayName: 'wakuwaku' })
console.log()
console.log('### currentUser')
user = firebase.auth().currentUser
console.log(`displayName: ${user.displayName}`)
console.log()
console.log('### signOut')
await firebase.auth().signOut()
console.log()
console.log('### currentUser')
user = firebase.auth().currentUser
console.log(user)
} catch (err) {
console.log(`Error: ${JSON.stringify(err)}`)
}
})()
作成済みユーザーのメールアドレスで動作確認します。
$ node auth.js test1@example.com xxxxxxx
### currentUser
null
### signInWithEmailAndPassword
### currentUser
displayName: null
emal: test1@example.com
emailVerified: false
uid: De7sc7tks4aGd2syg8vhIOW6jzi2
### updateProfile
### currentUser
displayName: wakuwaku
### signOut
### currentUser
null
まだ作成していないユーザーのメールアドレスで動作確認します。
$ node auth.js test2@example.com xxxxxxx
### currentUser
null
### signInWithEmailAndPassword
Error: {"code":"auth/user-not-found","message":"There is no user record corresponding to this identifier. The user may have been deleted."}