Closed2

Node.js(TypeScript)でCloud Functionsから認証ありのCloud Functionsを呼び出す

tktk2otktk2o

Node.js(TypeScript)で実装したCloud Functions(Firebase Functions)のHTTP関数内で他のProjectの認証ありのCloud Functionsの呼び出す必要があって調査したのでメモしておく

tktk2otktk2o

手順

基本的にはここの 関数呼び出しに対する関数の認証 に書いてある通り
https://cloud.google.com/functions/docs/securing/authenticating#functions-bearer-token-example-nodejs

  1. 受信側にCloud Functions起動元のRoleを付与する
  2. google-auth-library を使って呼び出す

そうすると Authorization: Bearer にIDトークンを設定してリクエストしてくれる

※HttpExceptionはNestJS

$yarn add google-auth-library
import { GoogleAuth } from 'google-auth-library';
import { HttpException } from '@nestjs/common';

const findAll = async (): Promise<Hoge[]> => {
  const auth = new GoogleAuth();
  const client = await auth.getIdTokenClient(URL);
  const response = await client.request<Hoge[]>({
    url: `${URL}`,
  });
  return response.data.map((r) => ({
    id: r.id,
    name: r.name,
  }));
};

const create = async (hoge: Hoge): Promise<void> => {
  const auth = new GoogleAuth();
  const client = await auth.getIdTokenClient(URL);
  const response = await client
    .request<void>({
      url: `${URL}`,
      method: 'POST',
      data: hoge,
    })
    .catch((e) => {
      throw new Exception(e.response.data.message, e.code);
    });
  return response.data;
};

このスクラップは2022/07/02にクローズされました