Firebase

[Firebase] Cloud Functionsの実行結果をCDNにキャッシュする

Firebaseで動的に情報を出力する場合にCloudFunctionsを利用するわけですが、頻繁に情報が変化しない場合など実行結果を一定時間キャッシュしたくなりますよね。Firebaseでは非常に手軽に実装できます。

結論から言うと以下のようにCache-Controlヘッダを出力するだけ。以下で30秒間Firebaseが用意するCDNに実行結果がキャッシュされます。publicのつけ忘れにご注意を。

res
  .set("Cache-Control", "public, max-age=30")
  .send("キャッシュされるよ");

最初これを知らずにCDNを別途用意して、Firebase側をオリジンに設定しようとしていましたw 危ない危ないw
続きを読む

[Firebase] Functionsで環境変数を参照/設定する

Firebaseでの「環境変数」は、OSなどから提供される情報が得られる物と、Firebaseが独自に提供する2種類の機能があります。前者が他の環境でも一般的に環境変数と呼ばれる物ですね。

ここではそれぞれの利用方法を見ていきます。
続きを読む

Firebaseからのメール「Firebase CLI lower than 7.7.0 will need to explicitly grant access through Cloud IAM」

珍しくFirebaseからメールが届いていましたが、開いてみればIt’ a 英文。がんばって読み解いてみます(;´∀`)

結論

結論としては以下です。

  1. FirebaseのCLIのバージョンを今すぐ確認
  2. v7.7.0に満たない場合は今すぐアップデートする
  3. 古いままのCLIを使ってると来月から面倒なことになる

Cloud Functionsのセキュリティ関係の仕様変更により、古いままのCLIでデプロイしてると、「このFunctionを一般公開する」手続きを毎回取る必要が出てきます。新しいバージョンを使っていればその手間は発生しないという内容でした。

続きを読む

[Firebase] デプロイ対象を一部のサービスに限定する

小ネタです。
Firebaseでは特に何も考えずCLIでfirebase deployコマンドを実行するとプロジェクト内のすべてのファイルをデプロイしてくれちゃいます。意図した物であればもちろん良いのですが、例えばHostingだけ、もしくはCloudFunctionsだけといった場合には--onlyオプションを活用します。

続きを読む

Web版「Sign In with Apple」を実装する

今年のWWDCで発表された「Sign In with Apple」のWeb版(JavaScript版)を実装してみたいと思います。

今回、裏側はFirebaseを利用していますが、Authenticationは使っていませんので、一般的な環境でも参考になると思います。(執筆時点でまだFirebaseが未対応なので使いたくても使えないわけですがw)

※2019-09-23 「1.5 ユーザーを一意に特定するID」追記

続きを読む

[Firebase] AuthenticationでSMS認証 (Web編)

これまでFirebaseへ様々な認証をお試してしてきました。

今回は電話番号を使ったSMS認証です。

AuthenticationでSMSログイン

メールアドレスやSMSは匿名性の高い物が一人で量産できてしまいますが、電話番号であれば何かしらの契約が必要になりますのでハードルを高くすることが可能です。

この認証方法ではユーザーが入力した電話番号宛にFirebaseからSMS(昔でいうショートメール)が送信されます。SMS内にある暗証番号をログインページで入力してもらうことで本人確認が行えるというわけです。
続きを読む

[Firebase] AuthenticationでGitHub認証 (Web編)

Firebaseへメールアドレス認証Twitter認証Facebook認証Google認証匿名認証、お次はGitHubです。

AuthenticationでGitHubログイン

エンジニア向けのサイトだとGitHubでログインさせたくなりますよね。

Firebase Webコンソールの設定

FirebaseのWebコンソールへログインしたら、メニュー「Authentication」→「ログイン方法」とたどります。

画面の真ん中あたりにある「GitHub」のアコーディオンメニューを開き、「有効にする」にチェックしたあと、コールバックAPIをメモします。

ここまで出来たらGitHubへ移動します。

続きを読む

[Firebase] AuthenticationでFacebook認証 (Web編)

Firebaseへメールアドレス認証Twitter認証匿名認証と続き、今回はfacebookでの認証に挑戦します。

Authenticationでfacebookログイン

Facebookアプリを作成する際に、実際に本番で利用するためには「プライバシーポリシー」が掲載されたURLが必要になります。開発段階では不要ですが公開を考えている場合には早めに用意しておくことをおすすめします。

facebookでデベロッパー登録

Facebookにログインし、開発者サイトから登録を行います。

登録する手順も書こうと思ったのですが、10年以上前に登録を終えてしまっていたためここでは割愛します。FacebookはTwitterと違って複数のアカウントが作れない(作りづらい)のですよね(´・ω・`)

facebookアプリを作成

開発者サイトの右上のメニュー「マイアプリ」→「新しいアプリを追加する」をクリック

アプリの名称とメールアドレスを入力し「アプリIDを作成してください」をクリック

続きを読む

[Firebase] AuthenticationでTwitter認証 (Web編)

以前はFirebaseへメールアドレスでのログインを行いましたが、今回はTwitterでの認証に挑戦したいと思います。

AuthenticationでTwitterログイン

Twitterでアプリを作成

まず最初にTwitterでデベロッパー登録を行う必要があります。承認されるまでに数時間〜数日かかりますので思いついたら早めに申請しておくのがおすすめです。

その後Twitter上でOAuthアプリを作成します。といっても何も難しいことはなく必要な項目をフォームに入力するだけです。このときにCallback URLの入力を求められたら、いったんFirebseのWebコンソールへ移動します。

Twitterのデベロッパーサイトは日本語訳されていませんので、私もそうなのですが英語が苦手な方はGoogle翻訳をタブで開きながら行えばなんとかなります。
続きを読む

[Firebase] Authenticationで匿名認証 (Web編) その1

Firebaseの匿名認証はイメージとしてはセッションIDのような物で、ユーザーにログインなど特別な操作をせずともブラウザ(クライアント)を識別する一意のIDを付与してくれます。もちろんメールやSNSなど何らかのログインを行った場合は移行することも可能です。

匿名認証

コンソールで設定

最初にFirebaseのWebコンソールで匿名認証を有効にする必要があります。
コンソールにログインしたら、メニュー「Authentication」→「ログイン方法」とクリック。

下の方にある「匿名」のアコーディオンを開いて、「有効にする」をクリックし「保存」ボタンを押せば完了です。

続きを読む

[Firebase] Firestoreでリアルタイムなチャットを作る (Web編) その4

今回はチャットで発言する内容にNGワードのチェックを入れたいと思います。
特定のキーワードが含まれている場合、「?」など伏せ字に置換する機能です。

実装方法を考える

方針

この実装方法は2つのパターンが考えられます。

クライアントでチェック
中身を覗かれるとNGワードのリストが漏洩しますし、サーバ側のAPIを直接リクエストされると機能しません。ただし高速に動作する可能性が高い。
サーバ側でチェック
NGワードのリストが漏洩する心配もなく、サーバ側APIを直接叩かれても機能する。ただしクライアント側で処理する場合に比べると低速。

あくまでFirestoreで実装した前提ですが、いずれも一長一短ありますがここはひとまずサーバ側で実装してみたいと思います。
続きを読む