前回のFirebase Realtime Databaseでセキュリティルールを誰でも操作できるようにした状態だったので、たまに勝手に・・・サーボモーターが動くことがあったので(汗)Firebase Authenticationでユーザー認証の設定をしてみます。
- Firebase プロジェクト作成 Windows10にNode.js・Firebase-tools インストール・ログイン
- Firebase Authenticationでユーザー認証(Arduino IDE+ESP8266)(今このページを見ています)
Firebaseですでにプロジェクトを作ってある状態から始めます。
セキュリティルール変更
Databaseのルールタグに移動します。

ログイン認証できるように以下のようにルールを変更してみました。
{ "rules": { ".read": "auth != null", ".write": "auth != null" } }
ログイン方法を設定
FirebaseのプロジェクトでAuthenticationを選んで、ログイン方法のタブに進む。
ログインするのはGoogleアカウントかメールを有効にすれば当面問題なさそうなのでこの2つを有効にしてみました。

データベースのシークレット生成
プロジェクトの設定 > サービスアカウント > 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 ユーザー認証設定のメモでした。
コメント