Categories
Без категория

Оторизирана аутентификация с Javascript Fetch API и Google’s Firebase – част 2

Разбира се, използването на async/await синтаксис може да направи кода по-четим и лесен за управление, особено когато работите с асинхронни операции, като тези при комуникация с Firebase. Ето как може да изглежда една интеграция, използвайки async/await:

Инициализация на Firebase

Първоначално, включете Firebase SDK във вашия проект, след което инициализирайте Firebase с вашите конфигурационни данни:

import firebase from "firebase/app";
import "firebase/auth";

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID"
};

firebase.initializeApp(firebaseConfig);

Оторизирана Аутентификация с Fetch API

Следващата стъпка е да създадете функции, които използват Fetch API за аутентификация на потребителите чрез Firebase. Тук ще ви покажем как да направите това с async/await:

  1. Създаване на Акаунт
async function signUp(email, password) {
  try {
    const response = await fetch('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=YOUR_API_KEY', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ email, password, returnSecureToken: true })
    });
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error:', error);
  }
}
  1. Вход в системата
async function signIn(email, password) {
  try {
    const response = await fetch('https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=YOUR_API_KEY', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ email, password, returnSecureToken: true })
    });
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error:', error);
  }
}

Управление на Сесии и Защита на Ресурси

След като потребителят е аутентикиран, можем да използваме токена, върнат от Firebase, за управление на сесии и защита на ресурси:

async function fetchProtectedResource() {
  try {
    const token = localStorage.getItem('token');
    const response = await fetch('https://your-protected-api.com/endpoint', {
      headers: {
        'Authorization': `Bearer ${token}`
      }
    });
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error:', error);
  }
}

Изпълнение на Функциите

Накрая, използвайте функциите, които създадохте, за да регистрирате и влезете като потребител, и да извлечете защитени ресурси:

signUp('user@example.com', 'user_password').then(() => {
  signIn('user@example.com', 'user_password').then(() => {
    fetchProtectedResource();
  });
});

Заключение

Като комбинираме мощта на Firebase с гъвкавостта на Fetch API и чистотата на async/await синтаксиса, създаваме надеждна и съвременна система за аутентификация в уеб приложения. Това позволява на разработчиците да създават бързи и сигурни приложения, които осигуряват отлично потребителско преживяване.

Categories
Без категория

Оторизирана аутентификация с Javascript Fetch API и Google’s Firebase – част 1

Аутентификацията е критична част от повечето съвременни уеб приложения, осигурявайки, че само упълномощени потребители имат достъп до защитени ресурси. Използването на JavaScript Fetch API заедно с Google’s Firebase може да предложи солидна и надеждна система за аутентификация. В този контекст, ще разгледаме подробности относно интеграцията на тези две технологии за постигане на оторизирана аутентификация в уеб приложения.

Подготовка на средата

Преди всичко, трябва да настроим проекта в Google Firebase, като следваме стъпките, описани в официалната документация. След успешната настройка, можем да преминем към интеграцията на Firebase SDK в нашето уеб приложение, където също ще използваме JavaScript Fetch API.

Инициализация на Firebase

След като включим Firebase SDK в нашето приложение, трябва да го инициализираме, като посочим конфигурационните детайли, предоставени от Firebase конзолата. Този процес включва добавяне на специален скрипт в HTML файла на приложението:

<script src="https://www.gstatic.com/firebasejs/8.0.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.0.0/firebase-auth.js"></script>

След това, инициализираме Firebase приложението в JavaScript файла си:

var firebaseConfig = {
    apiKey: "YOUR_API_KEY",
    authDomain: "YOUR_AUTH_DOMAIN",
    projectId: "YOUR_PROJECT_ID",
    storageBucket: "YOUR_STORAGE_BUCKET",
    messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
    appId: "YOUR_APP_ID"
};
firebase.initializeApp(firebaseConfig);

Аутентификация чрез Fetch API

След като нашата среда е настроена, можем да преминем към процеса на аутентификация. JavaScript Fetch API представлява модерен и мощен начин за извършване на HTTP заявки. Можем да използваме Fetch API за комуникация с Firebase аутентификационните API-та, както следва:

  1. Създаване на Акаунт
fetch('https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=YOUR_API_KEY', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        email: "user@example.com",
        password: "user_password",
        returnSecureToken: true
    })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
  1. Вход в системата
fetch('https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=YOUR_API_KEY', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        email: "user@example.com",
        password: "user_password",
        returnSecureToken: true
    })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

В горепосочените примери, YOUR_API_KEY трябва да бъде заменен с реалния API ключ, получен от вашата Firebase конзола.

Управление на сесии и защита на ресурси

След като потребителят е успешно аутентикиран, Firebase ще върне токен, който може да се използва за идентификация и оторизация на потребителя за достъп до защитени ресурси. Този токен следва да бъде съхранен на сигурно място (например в localStorage) и да се изпраща с всяка заявка към защитени API ендпойнти.

localStorage.setItem('token', data.idToken);

fetch('https://your-protected-api.com/endpoint', {
    headers: {
        'Authorization': 'Bearer ' + localStorage.getItem('token')
    }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

В този пример, data.idToken представлява токена, получен при успешна аутентификация.

Заключение

Чрез комбинацията на JavaScript Fetch API и Google’s Firebase, разработчиците могат да създават надеждни и безопасни системи за аутентификация с относително малко усилия. Използването на тези технологии позволява бързо и ефективно разработване на уеб приложения, които отговарят на съвременните стандарти за сигурност и удобство за потребителя.