Firebase
Functions
名称
下記の 2 つは微妙に違うみたい。
- Cloud Functions
gcloud
cli から操作する
- Cloud Functions for Firebase
firebase
cli から操作する
セットアップ
firebase login
firebase init functions
firebase deploy
Node.js v8.* を使うなら、functions/package.json
に "engines": { "node": "8" }
を追加する
const functions = require('firebase-functions');
// ユーザの削除をトリガにする
exports.helloWorld = functions.auth.user().onDelete((user) => {});
// http通信をトリガにする
exports.helloWorld2 = functions.https.onRequest(async (req, res) => {});
cors を有効にする
const cors = require('cors')(); // invokeを忘れずに
exports.storeImage = functions.https.onRequest((request, response) => {
cors(request, response, async () => {
// do something
});
});
Auth
backend
yarn add firebase-admin
const firebaseAdmin = require('firebase-admin');
firebaseAdmin.initializeApp({
credential: firebaseAdmin.credential.cert({
projectId: '',
clientEmail: '',
private_key_id: '',
privateKey: JSON.parse(process.env.FIREBASE_PRIVATE_KEY),
}),
});
const result = await firebaseAdmin.auth().verifyIdToken(token);
const firebaseUserId = result.user_id;
frontend
yarn add firebase
初期化
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/storage';
firebase.initializeApp({
apiKey: '',
authDomain: '',
projectId: '',
storageBucket: '',
});
ログイン
// login with google
const provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('email');
await firebase.auth().signInWithRedirect(provider);
// login anonimously
const result = await firebase.auth().signInAnonymously();
ユーザ情報の取得
// listen auth status change (必要に応じてunsubscribeを忘れずに)
const unsubscribe() = firebase.auth().onAuthStateChanged(user => {});
unsubscribe();
// get current user(初期ロード時などはUndefinedになる可能性あり)
var user = firebase.auth().currentUser;