Firebase Authenticationでユーザー認証(Arduino IDE+ESP8266)

前回のFirebase Realtime Databaseでセキュリティルールを誰でも操作できるようにした状態だったので、たまに勝手に・・・サーボモーターが動くことがあったので(汗)Firebase Authenticationでユーザー認証の設定をしてみます。

Firebaseですでにプロジェクトを作ってある状態から始めます。

セキュリティルール変更

Databaseのルールタグに移動します。

https://console.firebase.google.com/project/physical-switch-iot/database/physical-switch-iot/rules

ログイン認証できるように以下のようにルールを変更してみました。

{
 "rules": {
 ".read": "auth != null",
 ".write": "auth != null"
 }
}

ログイン方法を設定

FirebaseのプロジェクトでAuthenticationを選んで、ログイン方法のタブに進む。

ログインするのはGoogleアカウントかメールを有効にすれば当面問題なさそうなのでこの2つを有効にしてみました。

https://console.firebase.google.com/project/physical-switch-iot/authentication/providers ログイン方法

データベースのシークレット生成

プロジェクトの設定 > サービスアカウント > Database secrets

こちらから「シークレットを追加」を押してシークレットを生成。

シークレットの部分に「●●●・・・」と表示されますので右側に表示される「表示する」を押してシークレットコードをコピーします。これはArduino IDEのスケッチに定数FIREBASE_AUTHを追加して使います。(下で説明してあります。)

データベースのシークレットは既に廃止されており、レガシーの Firebase トークン生成ツールを使用します。Firebase Admin SDK を使用してソースコードを更新してください。

こちら↑の警告がでていますが、とりあえずはデータベースのシークレットを使えばユーザー認証機能が使えました。

Webユーザー認証

ユーザー認証は↓こちらの方が簡単にまとめてくださっているので丸パクリで少し改造してみました。ソースは後ほどまとめてアップしてみます。

Arduino IDE スケッチ

最後にスケッチに以下の項目を追加修正する必要があります。

この修正をするのを忘れていて、いくらやってもユーザー認証できなくてハマっていました。

#define FIREBASE_HOST "xxxxxx.firebaseio.com"
#define FIREBASE_AUTH "xxxxxxxxxxxxxxxxxxxxx"//データベースのシークレット
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

以上、Firebase ユーザー認証設定のメモでした。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする