を仮で実装してみた。
とはいえ中身はほとんど以下を参考にしている。
カスタム認証の仕組みは最初いまいちよく分からなかったが、
- ログイン画面からSlackの認証画面に飛ばす
- Slackの認可実行後、Cloud Functionsの方へリダイレクトさせる
- リダイレクト先はSlackの管理画面で設定できる
- Cloud Functions内でアクセストークン取得APIを実行する
- 3.のレスポンスからFirebaseの認証に使うカスタムトークンを作成する
- 4.で作成したカスタムトークンを持たせたまま元の画面にリダイレクトさせ、そのカスタムトークンを利用してFirebaseにログインする
という流れを把握することで理解できた(気になれた)。
色々詰まったところは以下。
- 参考にしたQiita記事の注意点(アクセストークン取得で外部アクセスが発生するため、従量課金プランに変更する必要がある点や、カスタムトークン作成時の権限関係)のところは同じようにハマった
- 権限関係の話はこちら
- Cloud Functionsのデフォルトタイムアウトは60秒であり、これを変更しようと思った場合Firebaseの画面でなくGCPの画面に移動する必要があり、それがちょっと面倒だった
- 普通にソースコードからも設定できるらしいが、ちょっとまだ試せていない
- dotenvをちゃんと使いこなせていないせいでリダイレクト先等の値をうまく環境変数からとってこれず、そのせいでいろいろ時間を取られた
- ローカル用と本番用のリダイレクトURLをSlackに登録するとアクセストークン発行がうまくいかなかった
- bad_redirect_uriのエラーが返ってきた
- 最初のリダイレクト時と同じURLを指定する的なことを書いてある気がするが、同じURLを指定してもダメだった
- 最終的にリダイレクトURLを一つだけ指定してやることでうまく動作するようになった
- 解決できていない気がするが、よく考えたら実運用だとテスト用と本番用でSlackのアプリ複数作成すればいいかと思うようになった
- bad_redirect_uriのエラーが返ってきた