別記事での実装をベースに、AuthUI を利用した場合の認証機能作成方法を紹介します。
ASP.NET Core Razor Pages と Firebase Authentication を組み合わせた認証機能の作成 | Water Margin
AuthUI を利用することで、認証プロバイダーを呼び出すボタンを自動的に表示してくれるようになります。ログインボタン周りの実装の手間が省けるメリットがあります。
上記リンク記事で公開しているサンプルのうち、Login.cshtml を下記の様に差し替えます。
@page
@model ASPNETCore_Firebase_Auth_Google_AuthUI.Pages.LoginModel
@{
}
<form id="form1" method="post" hidden>
<input id="token" asp-for="Credential.Token" />
<input id="uid" asp-for="Credential.Uid" />
</form>
<div id="firebaseui-auth-container"></div>
@section Scripts{
<script src="https://www.gstatic.com/firebasejs/ui/4.8.0/firebase-ui-auth.js"></script>
<link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/4.8.0/firebase-ui-auth.css"/>
<script src="https://www.gstatic.com/firebasejs/8.6.2/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.5.0/firebase-auth.js"></script>
<script>
const firebaseConfig = {
...
};
firebase.initializeApp(firebaseConfig);
document.addEventListener('DOMContentLoaded', (event) => {
let uiConfig = {
callbacks: {
signInSuccessWithAuthResult: function (result) {
console.log("ログイン成功");
document.getElementById("token").value = result.credential.idToken;
document.getElementById("uid").value = result.user.uid;
// サーバーに認証情報を送信
document.getElementById("form1").submit();
return false;
}
},
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
]
};
let ui = new firebaseui.auth.AuthUI(firebase.auth());
ui.start('#firebaseui-auth-container', uiConfig);
});
</script>
}