Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Management REST API를 사용하여 Firebase 프로젝트 설정 및 관리

중포 기지 관리 REST API는 프로젝트의 중포 기지 자원과 중포 기지 앱을 포함하여 중포 기지 프로젝트의 프로그램 설정 및 관리를 할 수 있습니다.

이 개요는 기존에 중포 기지의 자원과 애플리케이션을 추가 할 수있는 일반적인 작업에 대해 설명 Google 클라우드 프로젝트 현재 중포 기지 서비스를 사용하지 않습니다.

다음을 수행하려는 경우 이 페이지의 특정 섹션으로 이동할 수 있습니다.

이 페이지의 단계를 수행하기 전에, 당신이 있는지 확인 API를 수 있습니다 .

중포 기지 관리 API에 대한 액세스 관리에 대한 자세한 내용은 방문 클라우드 신원 접근 관리 (IAM) API 문서를 .

시작하기 전에

시작하기 전에, 당신은해야합니다 관리 API 가능 하여 Google 클라우드 프로젝트 및 토큰에 대한 액세스를 생성합니다 .

Google Cloud 프로젝트에 대한 관리 REST API 사용

당신이하지 않았다면, 당신은 사용하도록 설정해야합니다 중포 기지 관리 API 사용자의 Google 클라우드 프로젝트에 사용합니다.

  1. 오픈 중포 기지 관리 API 구글 API를 콘솔 페이지를.
  2. 메시지가 표시되면 Google Cloud 프로젝트를 선택합니다.
  3. 클릭 중포 기지 관리 API 페이지에 사용합니다.

API 액세스 토큰 생성

다음은 액세스 토큰을 검색하는 Node.js의 예입니다.

당신이 Google 클라우드 환경에 있지 않은 경우, 최초로 설정된 GOOGLE_APPLICATION_CREDENTIALS 서비스 계정 키의 경로에 환경 변수를.

리눅스 또는 맥OS

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"

PowerShell 사용:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

그런 다음 Firebase Admin SDK를 사용하여 서비스 계정 자격 증명에서 액세스 토큰을 가져옵니다.

const admin = require('firebase-admin');

function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

프로젝트의 리소스 이름 찾기

Firebase 서비스를 추가할 수 있는 Google Cloud 프로젝트를 찾을 수 있습니다.

요구

전화 availableProjects.list . 이 호출에 대한 요청 본문은 비어 있어야 합니다.

다음은 사용 가능한 GCP 프로젝트 목록을 요청하는 Node.js의 예입니다.

const fetch = require('node-fetch');

async function listProjects() {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/availableProjects';
  const options = {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    const projects = resp['projectInfo'];
    console.log('Project total: ' + projects.length);
    console.log('');
    for (let i in projects) {
      const project = projects[i];
      console.log('Project ' + i);
      console.log('ID: ' + project['project']);
      console.log('Display Name: ' + project['displayName']);
      console.log('');
    }
  } catch(err) {
    console.error(err);
  }
}

결과

에 대한 호출에서 응답 본문 availableProjects.list 목록이 포함되어 ProjectInfo 객체. 프로젝트 목록이 너무 긴 경우, 응답 본문도 포함 nextPageToken 당신이 프로젝트의 다음 페이지를 얻을 수있는 쿼리 매개 변수로 사용할 수 있습니다.

여기의 예 응답의 몸 availableProjects.list 호출 :

{
  "projectInfo": [
    {
      "project": "projects/first-cloud-project",
      "displayName": "First Cloud Project"
    },
    {
      "project": "projects/second-cloud-project",
      "displayName": "Second Cloud Project"
    }
  ]
}

이 예시 응답에는 Firebase 서비스를 추가할 수 있는 두 개의 GCP 프로젝트가 있습니다. 있습니다 project 필드는 프로젝트에 대한 전역 적으로 고유 한 자원 이름을 제공합니다.

당신은 어떤 사용할 수있는 project 의 응답에 나열된 값 availableProjects.list 하는 중포 기지의 서비스를 추가 하거나 응용 프로그램을 추가 프로젝트에 있습니다.

다음 섹션에서, 우리는에 중포 기지의 서비스를 추가 할 것입니다 First Cloud Project 사용하여 projects/first-gcp-project 리소스 이름을.

프로젝트에 Firebase 서비스 추가

Google Cloud 프로젝트는 Firebase에서 제공하는 서비스를 활용할 수 있습니다. 이 섹션에서는 프로그래밍 방식으로 기존 Google Cloud 프로젝트에 Firebase 서비스를 추가하는 방법을 알아봅니다. 당신은 또한에 기존 Google 클라우드 프로젝트에 중포 기지 서비스를 추가 할 수 있습니다 중포 기지 콘솔 .

요구

전화 projects.addFirebase . 이 호출에 대한 요청 본문은 비어 있어야 합니다.

다음은 Google Cloud 프로젝트에 Firebase 서비스를 추가하는 Node.js의 예입니다.

const fetch = require('node-fetch');

async function addFirebase(projectId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addFirebase';
  const options = {
    method: 'POST',
    // Use a manual access token here since explicit user access token is required.
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

결과

호출의 결과 projects.addFirebaseOperation . 프로젝트의 다른 Firebase 관련 엔드포인트를 호출하려면 먼저 작업이 성공해야 합니다.

작업이 성공하면 확인하려면 호출 할 수 있습니다 operations.get 의 값에 도달 할 때까지 작업을 done 있다 true 과 그 response 타입이다 FirebaseProject . 작업이 실패 할 경우, 그 error 설정되어 google.rpc.Status .

여기의 응답 본문의 operations.get 호출 :

{
  "name": "operations/...",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.FirebaseProject",
    "projectId": "first-cloud-project",
    "projectNumber": "...",
    "displayName": "First Cloud Project",
    "name": "projects/first-cloud-project",
    "resources": {
      "hostingSite": "first-cloud-project",
      "realtimeDatabaseInstance": "first-cloud-project"
    }
  }
}

이후 done 있다 trueresponse 유형이있다 FirebaseProject , Google 클라우드 프로젝트는 이제 중포 기지의 서비스를 제공합니다. 응답은 새로 생성에 대한 유용한 정보를 포함 FirebaseProject 그 같은 projectNumber 및 기본 resources . Operation 자동으로 완료 후 삭제됩니다.

프로젝트에 Firebase 앱 추가

많은 다른 응용 프로그램은 사용할 수 FirebaseProject 아이폰 OS, 안드로이드, 웹 애플리케이션을 포함. 이 섹션에서는 기존에 중포 기지 앱을 추가하는 방법을 학습합니다 FirebaseProject 프로그램. 당신은 또한에 기존 중포 기지 프로젝트에 중포 기지 앱을 추가 할 수 있습니다 중포 기지 콘솔 .

Firebase 프로젝트에 추가할 Firebase 앱 유형을 선택하세요.

기존 링크 할 수 있습니다 Google 웹 로그 분석 계정을 기존에 FirebaseProject 프로그램. 당신은 또한에 Google 웹 로그 분석에 기존 중포 기지 프로젝트를 링크 할 수 있습니다 통합 프로젝트 설정의 탭을 선택합니다.

를 호출 projects.addGoogleAnalytics 필요 analytics_resource 어느 쪽이 될 수 analyticsAccountId 또는 analyticsPropertyId :

  • 기존 지정 analyticsAccountId 조항에에게 지정된 계정 내에서 새 Google 웹 로그 분석 속성을하고 중포 기지 프로젝트와 새로운 속성을 연결합니다.

  • 기존 지정 analyticsPropertyId 당신의 중포 기지 프로젝트와 Google 웹 로그 분석 속성을 연결할합니다.

당신은 당신의 모두 찾을 수 있습니다 analyticsAccountId 및 기존 analyticsPropertyIdGoogle 웹 로그 분석 웹 사이트를 .

당신이 호출 할 때 projects.addGoogleAnalytics :

  1. 기존 데이터가있는 기존의 중포 기지 앱에 Google 웹 로그 분석 속성 대응에 스트림 경우 첫 번째 체크를 결정 FirebaseProject (에 기초 packageName 또는 bundleId 데이터 스트림과 관련된). 그런 다음 해당하는 경우 데이터 스트림과 앱이 연결됩니다. 이 자동 연결은 Android 앱 및 iOS 앱에만 적용됩니다.

  2. Firebase 앱에 해당하는 데이터 스트림이 없으면 각 Firebase 앱의 Google 애널리틱스 속성에 새 데이터 스트림이 프로비저닝됩니다. 새 데이터 스트림은 이전에 Analytics 속성의 데이터 스트림과 연결된 경우에도 항상 웹 앱에 대해 프로비저닝됩니다.

에서 계정 더 Google 웹 로그 분석의 계층 구조에 대해 알아 분석 문서 .

요구

전화 projects.addGoogleAnalytics .

우리의 예를 호출에 대한 요청 본문에서 project.addGoogleAnalytics , 우리는 우리의 Google 웹 로그 분석 계정을 지정합니다 analyticsAccountId . 이 호출 프로 비전 새 Google 웹 로그 분석 속성과 함께 새 속성에 연결 FirebaseProject .

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

다음은 Firebase 프로젝트를 Google 애널리틱스 계정과 연결하는 Node.js의 예입니다.

const fetch = require('node-fetch');

async function addGoogleAnalytics(projectId, analyticsAccountId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addGoogleAnalytics';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'analyticsAccountId': analyticsAccountId
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

결과

호출의 결과 projects.addGoogleAnalyticsOperation . 프로젝트의 다른 Firebase 관련 엔드포인트를 호출하려면 먼저 작업이 성공해야 합니다.

작업이 성공하면 확인하려면 호출 할 수 있습니다 operations.get 의 값에 도달 할 때까지 작업을 done 있다 trueresponse 형식이다 analyticsDetails . 작업이 실패 할 경우, 그 error 설정되어 google.rpc.Status .

여기의 응답 본문의 operations.get 호출 :

{
  "name": "operations/...",
  "none": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
    "analyticsProperty": [
      {
        "id": "...",
        "displayName": "..."
      }
    ],
    "streamMappings": [
      {
        "app": "...",
        "streamId": "...",
        "measurementId": "..."
      }
    ]
  }
}

이후 done 사실과 response 유형이 analyticsDetailsFirebaseProject 이제 지정된 Google 웹 로그 분석 계정에 연결되어 있습니다. Operation 자동으로 완료 후 삭제됩니다.

프로젝트의 기본 위치 마무리(선택 사항)

당신의 중포 기지 프로젝트는 클라우드 경우 FireStore, 클라우드 스토리지, 또는 앱 엔진 응용 프로그램을 사용하는 경우, 당신은 마무리 할 수 기본 Google 클라우드 플랫폼 (GCP) 자원 위치를 프로그래밍 프로젝트에. 당신은 또한의 위치를 선택할 수 있습니다 중포 기지 콘솔 .

이 위치를 설정하기 전에 체크 아웃 프로젝트의 위치를 선택 위치 프로젝트에 가장 적합한에 대한 정보를. 또한 호출해야 projects.availableLocations 한 후, 프로젝트가 Google 클라우드 조직의 일부인 경우 때문에 프로젝트에 대한 올바른 위치의 목록을 반환하는 조직 정책이있는 위치를 제한 할 수있는 프로젝트에 유효합니다.

이 호출 defaultLocation.finalize A를 앱 엔진 애플리케이션 방법을 만듭니다 기본 클라우드 스토리지 버킷 에 위치한 locationId 당신이 요청 본문에서 제공하는이.

경우 기본 GCP 자원 위치는 이미 지정되어 있습니다 Project 이미 앱 엔진 애플리케이션이 있거나이 defaultLocation.finalize 방법은 이전에 불렸다.

요구

전화 projects.defaultLocation.finalize . 요청 본문을 구성하는 방법은 다음과 같습니다.

  • 필수의:

    • locationId : 데이터가 클라우드 경우 FireStore 또는 클라우드 스토리지와 같은 위치 설정을 필요로 GCP 서비스에 저장되는 위치입니다.
{
  "locationId": "us-west2"
}

다음은 프로젝트의 기본 위치를 마무리하는 Node.js의 예입니다.

const fetch = require('node-fetch');

async function finalizeProjectLocation(projectId, locationId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/defaultLocation:finalize';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'locationId': locationId
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

결과

호출의 결과 projects.defaultLocation.finalizeOperation . 프로젝트의 다른 Firebase 관련 엔드포인트를 호출하려면 먼저 작업이 성공해야 합니다.

작업이 성공 여부를 확인하려면 호출 할 수 있습니다 operations.get 의 값에 도달 할 때까지 작업을 done 있다 true 과 그 response 타입이다 google.protobuf.Empty . 작업이 실패 할 경우, 응답 본문의 error 유형이 될 것입니다 google.rpc.Status . Operation 자동으로 완료 후 삭제됩니다.