[개발] Firebase 에서 이메일 주소로 인증 링크를 전송하여 로그인하기
안녕하세요 @realmankwon 입니다.
Firebase에서 사용자의 이메일 주소로 인증 링크를 전송하여 로그인하는 JavaScript 소스는 다음과 같습니다.
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_AUTH_DOMAIN",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_STORAGE_BUCKET",
messagingSenderId: "YOUR_SENDER_ID",
appId: "YOUR_APP_ID",
};
firebase.initializeApp(firebaseConfig);
const auth = firebase.auth();
const emailAddress = "<USER EMAIL ADDRESS>";
const actionCodeSettings = {
url: "https://<YOUR WEBSITE URL>",
handleCodeInApp: true,
};
auth.sendSignInLinkToEmail(emailAddress, actionCodeSettings)
.then(() => {
console.log("Sign-in email sent successfully!");
// Save the email locally so you can prompt the user to click the link in their email
localStorage.setItem("emailForSignIn", emailAddress);
})
.catch((error) => {
console.error("Error sending sign-in email:", error);
});
위 코드에서 부분은 해당되는 값을 넣어주어야 합니다.
sendSignInLinkToEmail 함수는 인증 링크를 생성하고, 해당 이메일 주소로 전송하는 Firebase Authentication의 함수입니다. 이 함수는 사용자의 이메일 주소와 인증 링크를 클릭했을 때 열리는 URL을 설정하는 actionCodeSettings 객체를 매개 변수로 받습니다.
위 코드에서 localStorage.setItem("emailForSignIn", emailAddress) 구문은 사용자의 이메일 주소를 로컬 스토리지에 저장합니다. 이 이메일 주소는 나중에 사용자가 링크를 클릭하여 로그인을 완료할 때 사용됩니다.
이 인증 링크는 사용자가 클릭하면, Firebase Authentication에서 자동으로 사용자를 인증하고, 사용자 정보를 가져올 수 있습니다.