LoginSignup
3
0

More than 3 years have passed since last update.

Firebase Admin SDK vs Firebase SDK

Posted at

サーバーに Firebase Admin SDK を追加する

Admin SDK を使用すると、特権環境から Firebase と対話し、次のような操作を行うことができます。

  • Realtime Database のデータの読み取りと書き込みを完全な管理者権限で実行する。
  • FCM サーバー プロトコルに対する簡単な代替アプローチを使用して、プログラムにより Firebase -
  • Cloud Messaging メッセージを送信する。
  • Firebase Auth トークンを生成し確認する。
  • Google Cloud Platform リソース(Cloud Storage バケットや、Firebase プロジェクトに関連付けられた Firebase データベースなど)にアクセスする。
  • 独自の簡単な管理コンソールを作成して、認証のためにユーザーデータの検索やユーザーのメールアドレス変更などの作業を行う。

特権環境(サーバーなど)からの管理者アクセスではなく、エンドユーザー アクセスのクライアントとして Node.js SDK を使用することを検討している場合(Node.js デスクトップ、IoT アプリケーションなど)、このドキュメントではなく、クライアント JavaScript Firebase SDK の設定に関する手順をご覧ください。

SDK の追加

$ npm install firebase-admin --save
var admin = require('firebase-admin');

あるいは ES2015 を使用している場合は、次のようにモジュールを import できます。

import * as admin from 'firebase-admin';

SDK の初期化

Firebase プロジェクトでは Google サービス アカウントがサポートされています。これを使用して、アプリサーバーまたは信頼できる環境から Firebase サーバー API を呼び出せます。コードをローカルで開発しているか、またはアプリケーションをオンプレミスでデプロイしている場合、このサービス アカウントで取得した認証情報を使用してサーバー リクエストを承認できます。

サービス アカウントを認証して Firebase サービスへのアクセスを承認するには、秘密鍵ファイルを JSON 形式で生成する必要があります。
サービス アカウントを介して承認する場合、アプリケーションの認証情報を指定するには 2 つの選択肢があります。GOOGLE_APPLICATION_CREDENTIALS 環境変数を設定することも、サービス アカウント キーへのパスをコードで明示的に渡すこともできます。1 つ目の選択肢のほうが安全であるため、強くおすすめします。
1.Firebase コンソールで、[設定] > [サービス アカウント] を開きます。
2.[新しい秘密鍵の生成] をクリックし、[キーを生成] をクリックして確定します。
3.キーを含む JSON ファイルを安全に保管します。

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

上記の手順を完了すると、アプリケーションのデフォルト認証情報(ADC)は認証情報を暗黙的に判別できるようになり、Google 以外の環境でテストするか実行するときに、サービス アカウントの認証情報を使用できます。

SDK を初期化します

admin.initializeApp({
  credential: admin.credential.applicationDefault(),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

Firebase を JavaScript プロジェクトに追加する

このガイドでは、Firebase JavaScript SDK をウェブアプリで使用する手順について説明します。また、Node.js デスクトップや IoT アプリケーションなどのエンドユーザー アクセスのクライアントとして使用する場合も、この手順に従ってください。

特権環境(サーバーなど)からの管理アクセスを設定する場合は、Firebase Admin SDK を設定してください。

ステップ 1: Firebase プロジェクトを作成する
ステップ 2: アプリを登録する
ステップ 3: Firebase SDK を追加して Firebase を初期化する

var firebaseConfig = {
  apiKey: "api-key",
  authDomain: "project-id.firebaseapp.com",
  databaseURL: "https://project-id.firebaseio.com",
  projectId: "project-id",
  storageBucket: "project-id.appspot.com",
  messagingSenderId: "sender-id",
  appID: "app-id",
};

ステップ 4:(省略可)CLI をインストールし、Firebase Hosting にデプロイする

npm install -g firebase-tools
firebase login
firebase init
  • ローカルアプリ ディレクトリを Firebase にリンクします。
  • firebase.json ファイル(Firebase Hosting に必要なファイル)を生成します
firebase.json
{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.index.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  }
}

  • Firebase が検索するディレクトリのデフォルト名は「public」です。firebase.json ファイルを直接編集することで、公開ディレクトリを設定することもできます。
firebase deploy

ステップ 5: アプリで Firebase にアクセスする

init-firebase.js
// TODO: Replace the following with your app's Firebase project configuration
var firebaseConfig = {
  // ...
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);

Firebase JavaScript SDK は、次の Firebase プロダクトをサポートしています。各プロダクトはオプションで、firebase 名前空間からアクセスできます。

Firebase プロダクト    名前空間    
Authentication  firebase.auth()     
Cloud Firestore firebase.firestore()        
Cloud Functions for Firebase Client SDK firebase.functions()        
Cloud Messaging firebase.messaging()        
Cloud Storage   firebase.storage()      
Performance Monitoring (ベータ版リリース) firebase.performance()      
Realtime Database   firebase.database()     
開発用のローカル ウェブサーバーを実行する
firebase serve
3
0
0

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
3
0