Google, Twitter, Facebook等のOAuth系認証は使うProviderクラスが変わるだけでやることは同じ。なのでまとめました。
Facebook認証とTwitter認証はデベロッパーアカウントでのアプリ設定が必要なのでGoogle認証より手間がかかる。
認証プロバイダー
サービス別に分かれています:
new firebase.auth.GoogleAuthProvider() new firebase.auth.TwitterAuthProvider() new firebase.auth.FacebookAuthProvider()
switchで切り替えられる:
let provider;
switch (providerName) {
case 'google.com':
provider = new firebase.auth.GoogleAuthProvider();
break;
case 'twitter.com':
provider = new firebase.auth.TwitterAuthProvider();
break;
case 'facebook.com':
provider = new firebase.auth.FacebookAuthProvider();
break;
}
ポップアップログイン
ポップアップウィンドウが立ち上がって認証するやつ。元のページがそのままなのでSPA向き。
signInWidthPopupを利用する
// async function
try {
const { user } = await firebase.auth().signInWithPopup(provider)
} catch (e) {
console.error(e);
}
リダイレクトログイン
同じ窓内でページ遷移とリダイレクトが発生する。
signInWithRedirectを利用する
// async function
try {
const { user } = await firebase.auth().signInWithRedirect(provider)
} catch (e) {
console.error(e);
}
再認証
リダイレクト認証、ポップアップ認証の関数名前半がreauthenticateWidthに変化する。
再認証はUserのメソッドであることに注意
// async function
try {
const { user } = await firebase.auth().currentUser.reauthenticateWithPopup(provider)
} catch (e) {
console.error(e);
}
ログアウト
どの認証方法でも共通
// async function
try {
await firebase.auth().signOut()
} catch (e) {
console.error(e);
}
Google認証でアカウントの選択を表示する
デフォルトの挙動では、アプリケーションを連携すると2回目以降のログインでは自動的にアカウントが選択されるが、ログインの都度アカウントを選ぶようにしたい時はAuthProviderのオプションでpropmtを設定する。
const googleAuthProvider = new firebase.auth.GoogleAuthProvider();
googleAuthProvider.setCustomParameters({
prompt: 'select_account'
});
Facebook側アプリ作成
デベロッパーアカウントでfacebook for developersにアクセスする。
アプリ作成して、ロボット確認など済ませるとダッシュボードに飛ばされる。
よく見ると下の方に製品を追加というのがあるのでスクロールする。
一番上の列中央にあるFacebookログインの設定ボタンを押す。
クイックスタートが始まるけど無視して左側のメニューから設定を押す。
有効なOAuthリダイレクトURIに、Firebaseのログイン方法で有効を押した時に出てくるポップアップのOAuthリダイレクトURIをコピペする。
設定→ベーシックでアプリの基本情報を埋める。
最初から埋まってるものはそのままでおk。プライバシーポリシーURLとカテゴリが必須。
上のアプリID隣にあるスイッチを押してオンにする。
アプリ公開について問われるので承認押す。
Facebookの方に戻ってこちらもスイッチを有効にしたらアプリIDとapp secretを入力。




→ 


