以前Authenticationによるログインを取り上げましたが、その際にログアウト(サインアウト)処理をすっぱり忘れていましたw
結論
結論から言うと以下の通りsignOut()
メソッドを実行するだけです。成功したらthen()
の箇所に好きな処理を書いてあげます。
firebase.auth().onAuthStateChanged( (user) => {
firebase.auth().signOut().then(()=>{
console.log("ログアウトしました");
})
.catch( (error)=>{
console.log(`ログアウト時にエラーが発生しました (${error})`);
});
});
サンプル
実行結果
ソースコード
config.js
いつもの設定用JSです。
// コンソールの内容をそのままコピペ
var config = {
apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
authDomain: "test-f76bc.firebaseapp.com",
databaseURL: "https://test-f76bc.firebaseio.com",
projectId: "test-f76bc",
storageBucket: "test-f76bc.appspot.com",
messagingSenderId: "1111111111111111"
};
firebase.initializeApp(config);
index.html
ログイン画面を担当するページですが、今回こちらは脇役です。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello Firebase Auth (ログアウト)</title>
<link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/3.5.2/firebaseui.css" />
<style>h1{text-align: center;}</style>
</head>
<body>
<h1>Hello Firebase Auth (ログアウト)</h1>
<div id="firebaseui-auth-container"></div>
<script src="https://www.gstatic.com/firebasejs/5.8.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.8.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/ui/3.5.2/firebase-ui-auth__ja.js"></script>
<script src="/js/config.js"></script>
<script>
//----------------------------------------------
// Firebase UIの設定
//----------------------------------------------
var uiConfig = {
// ログイン完了時のリダイレクト先
signInSuccessUrl: '/auth/logout/done.html',
// 利用する認証機能
signInOptions: [
{
provider: firebase.auth.EmailAuthProvider.PROVIDER_ID,
signInMethod: firebase.auth.EmailAuthProvider.EMAIL_LINK_SIGN_IN_METHOD,
forceSameDevice: false
}
],
// 利用規約のURL(任意で設定)
tosUrl: 'http://example.com/kiyaku/',
// プライバシーポリシーのURL(任意で設定)
privacyPolicyUrl: 'http://example.com/privacy'
};
var ui = new firebaseui.auth.AuthUI(firebase.auth());
ui.start('#firebaseui-auth-container', uiConfig);
</script>
</body>
</html>
done.html
今回の主役はこちら。ログアウトボタンを実装しています。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello Firebase Auth (ログアウト)</title>
<style type="text/css">
.hide{ display:none; }
</style>
</head>
<body>
<h1>...Please wait</h1>
<div id="info"></div>
<form>
<button type="button" id="logout" class="hide">ログアウト</button>
</form>
<script src="https://www.gstatic.com/firebasejs/5.8.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.8.1/firebase-auth.js"></script>
<script src="/js/config.js"></script>
<script>
firebase.auth().onAuthStateChanged( (user) => {
let logout = document.getElementById("logout");
//-----------------------------------
// ログインチェック
//-----------------------------------
if(! user) {
showMessage('Not Login', 'ログインしていません');
logout.classList.add("hide");
return(false);
}
//-----------------------------------
// ログイン者への処理
//-----------------------------------
// ログインメッセージ
showMessage('Login Complete!', `${user.displayName}さんがログインしました`);
// ログアウトボタンを表示
logout.classList.remove("hide");
// ログアウトボタンを押下
logout.addEventListener("click", ()=>{
firebase.auth().signOut().then(()=>{
console.log("ログアウトしました");
})
.catch( (error)=>{
console.log(`ログアウト時にエラーが発生しました (${error})`);
});
});
});
/**
* メッセージ表示
**/
function showMessage(title, msg){
document.querySelector('h1').innerText = title;
document.querySelector('#info').innerText = msg;
}
</script>
</body>
</html>
参考ページ
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。
同じカテゴリの記事
- [Firebase] Cloud Functionsの実行結果をCDNにキャッシュする
- [Firebase] Functionsで環境変数を参照/設定する
- Firebaseからのメール「Firebase CLI lower than 7.7.0 will need to explicitly grant access through Cloud IAM」
- [Firebase] デプロイ対象を一部のサービスに限定する
- [Firebase] CloudFunctionsのRESTful APIを独自ドメインで利用する
- [Firebase] Authenticationで複数の認証プロバイダへ同時対応する (Web編)
- [Firebase] AuthenticationでSMS認証 (Web編)
- [Firebase] AuthenticationでGitHub認証 (Web編)