React+TypeScript+Firebaseでの認証

未分類

仕事が一段落して、次の仕事を探してます。オファーは沢山有るけど、9割は書類落ち。何が悪いのか分からないです。まあ、この機会に趣味の勉強をしようと思って、React+TypeScript+Firebase認証のテストをすることにしました。

ログイン・サインアップは通常業務で使うのですが、私のサイトだと、そんな面倒くさいことしてユーザー拘束するのは嫌だったのでやってませんでした。

で、スクラッチで作るのも面倒だったので、コピペでできないかと色々ググってみたんですよ。

そしたら難点がいくつか。

・Reactの進化スピードが速すぎてサンプルコードが古く、動かない。
・説明が足りなくて、示されたコードをどのファイル名でどこにおいて良いか分からない

まず、React Routerという機能があります。v6は現時点(2022/03/04)では資料が少なすぎてうかつに使えないことに気づきました。皆さん、v5を使っているようです。

auth()がエラーになる件は

import firebase from "firebase/app";
は最新バージョンでは使えなくて、
import firebase from "firebase/compat/app";
にしなければいけない。

ということで解決。

認証コード(Auth Code)をどこにおけばいいかわからない。.envに書けとか、.env.localに書けとか書いてあるが、その性質上サンプルがGitHubになく、どういう書き方が正しくて、どこにおけばいいかわからない。

結局私は日本語サイトを参考にするのを止め、

Firebase Auth with React and Typescript
Learn how easy it can be to integrate an authentication system using Firebase in a React project.

を参考にしました。2021年5月なのでまだマシです。ただ、.envに認証コード書くのではないのでどうなのかな?

途中、App.tsxの改造について細切れで説明してますが、最後にフルの完成版があるのでいいです。

<Form.Row>とblockがエラーになるのはReactの仕様が変わっているので削除で対応。これから調べながら調整します。

やっとスタートに立てました。あとは、GoogleとTwitterのシングルサインオン機能を付けようと思ってます。

Googleでサインオンする方法はこちら。ただし、JavaScriptなので、ちょっと書き換える必要あり。

例えば、

<img src ={auth.currentUser!.photoURL} alt="" />

型 ‘string | null’ を型 ‘string | undefined’ に割り当てることはできません。
型 ‘null’ を型 ‘string | undefined’ に割り当てることはできません。

と、出てしまう。TypeScriptの場合、以下の様にする。

 <img src ={auth.currentUser!.photoURL as string} alt="" />

こんな感じです。

わたしが作ってみたReact+TypeScript+firebaseでのGoogleとTwitter認証のコードは次ページにあります。

コメント

タイトルとURLをコピーしました