5.20241.9

Firestore:ユーザーの認証

認証の場合、Firestore RESTAPIはFirebaseAuthenticationIDトークンまたはGoogleIdentity OAuth2.0トークンのいずれかを受け入れます。

  • Firebase IDトークン を使用する場合、FirestoreはCloudFirestoreセキュリティルールを使用してリクエストが承認されているかどうかを判断します。 これは、Firestoreセキュリティルール(柔軟で強力)を活用し、Snapshot クラスでサポートされる唯一のオプションであるため、推奨されるオプションです。
  • Google Identity OAuth 2.0トークン を使用する場合、FirestoreはCloud Identity and Access Management(IAM)を使用して、リクエストが承認されているかどうかを判断します。 このオプションは、Firestoreセキュリティルールをバイパスし、IAM管理者によってユーザーに付与された承認を使用します。 これは、GoogleSheet クラスで使用される認証に似ています。

この例では、FirebaseIDトークン を使用します。

まず、FirestoreクラスとOAuth2クラスをインポートする必要があります。

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

次に、生成したFirebaseIDトークンを使用して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;  
});