[]
        
(Showing Draft Content)

Firestore 사용자 인증

인증을 위해 Firestore REST API는 Firebase Authentication ID 토큰 또는 Google Identity OAuth 2.0 토큰 중 하나를 허용합니다.

  • Firebase ID 토큰을 사용하는 경우, Firestore는 Cloud Firestore 보안 규칙을 사용하여 요청이 승인되었는지 판단합니다. 이 옵션은 Firestore Security Rules(더 유연하고 강력)을 활용하므로 Snapshot 클래스에서 지원하는 유일한 옵션이기 때문에 권장됩니다.

  • Google Identity OAuth 2.0 토큰을 사용하는 경우, Firestore는 Cloud Identity와 Access Management (IAM)를 사용하여 요청이 승인되었는지 판단합니다. 이 옵션은 Firestore Security Rules을 우회하고 IAM 관리자가 부여한 권한을 사용합니다. 이는 GoogleSheet 클래스에서 사용하는 인증 방식과 유사합니다.


이번 예시에서 Firebase ID 토큰을 사용할 것입니다.


먼저 Firestore와 OAuth2 클래스를 가져와야 합니다:

import { Firestore, OAuth2 } from '@grapecity/wijmo.cloud';

그 다음, 생성한 Firebase ID 토큰을 사용하여 OAuth2 객체를 생성합니다:

const CLIENT_ID = '60621001861-h0u4ek4kmd3va9o2bubhq9ean0bgrhu2.apps.googleusercontent.com';
const SCOPES = [ 'https://www.googleapis.com/auth/userinfo.email' ];
let auth = new OAuth2(API_KEY, CLIENT_ID, SCOPES);

// button to log in/out
let oAuthBtn = document.getElementById('auth_btn');

// click button to log user in or out
oAuthBtn.addEventListener('click', () => {
    if (auth.user) {
        auth.signOut();
    } else {
        auth.signIn();
    }
});

인증을 완료하려면, 사용자가 변경될 때 idTokenFirestore 객체에 적용해야 합니다 (OAuth2 토큰을 사용할 경우 accessToken 속성을 설정하면 됩니다):

// update button/sheet state when user changes  
auth.userChanged.addHandler(s => {  
    let user = s.user;  

    // update button caption  
    oAuthBtn.textContent = user ? 'Sign Out' : 'Sign In';  

    // update Firestore ID token  
    fsNWind.idToken = user ? s.idToken : null;  
});