Firebase Management REST API를 사용하면 프로젝트의 Firebase 리소스 및 Firebase 앱을 비롯한 Firebase 프로젝트를 프로그래밍 방식으로 설정하고 관리할 수 있습니다.
이 개요에서는 현재 Firebase 서비스를 사용하지 않는 기존 Google Cloud 프로젝트 에 Firebase 리소스 및 앱을 추가하는 일반적인 워크플로를 설명합니다.
다음을 수행하려는 경우 이 페이지의 특정 섹션으로 이동할 수 있습니다.
- 프로젝트에 Firebase 서비스 추가
- Firebase 프로젝트에 Firebase 앱 추가
- Firebase 프로젝트를 Google 애널리틱스 계정에 연결
- 프로젝트의 기본 위치 마무리
이 페이지의 단계를 수행하기 전에 API를 활성화해야 합니다 .
Firebase Management API의 액세스 관리에 대한 자세한 내용은 Cloud IAM(Identity Access Management) API 문서 를 참조하세요.
시작하기 전에
시작하기 전에 GCP 프로젝트에 대해 관리 API를 사용 설정하고 액세스 토큰을 생성해야 합니다 .
GCP 프로젝트에 대한 관리 REST API 사용
아직 활성화하지 않았다면 Google Cloud 프로젝트에서 사용할 Firebase 관리 API 를 활성화해야 합니다.
- Google API 콘솔에서 Firebase 관리 API 페이지를 엽니다.
- 메시지가 표시되면 Google Cloud 프로젝트를 선택합니다.
- Firebase 관리 API 페이지에서 사용 을 클릭합니다.
API 액세스 토큰 생성
다음은 액세스 토큰을 검색하는 Node.js의 예입니다.
먼저 Google Cloud 환경이 아닌 경우 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
를 호출합니다. 이 호출에 대한 요청 본문은 비어 있어야 합니다.
다음은 사용 가능한 Google Cloud 프로젝트 목록을 요청하는 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
필드는 프로젝트에 대해 전역적으로 고유한 리소스 이름을 제공합니다.
availableProjects.list
의 응답에 나열된 모든 project
값을 사용하여 Firebase 서비스를 추가 하거나 프로젝트 에 앱 을 추가할 수 있습니다.
다음 섹션에서는 projects/first-gcp-project
리소스 이름을 사용하여 Firebase 서비스를 First Cloud Project
에 추가합니다.
프로젝트에 Firebase 서비스 추가
Google Cloud 프로젝트는 Firebase에서 제공하는 서비스를 활용할 수 있습니다. 이 섹션에서는 프로그래밍 방식으로 기존 Google Cloud 프로젝트에 Firebase 서비스를 추가하는 방법을 알아봅니다. Firebase 콘솔 에서 기존 Google Cloud 프로젝트에 Firebase 서비스를 추가할 수도 있습니다.
요구
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.addFirebase
호출 결과는 Operation
입니다. 프로젝트에 대한 다른 Firebase 관련 엔드포인트를 호출하려면 먼저 작업이 성공해야 합니다.
작업이 성공했는지 확인하려면 done
값이 true
이고 response
이 FirebaseProject
유형이 될 때까지 operations.get
에 대해 operations.get 을 호출할 수 있습니다. 작업이 실패하면 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
이 true
이고 response
유형이 FirebaseProject
이므로 이제 Google Cloud 프로젝트에 Firebase 서비스가 있습니다. 응답에는 projectNumber
및 기본 resources
와 같이 새로 생성된 FirebaseProject
에 대한 기타 유용한 정보도 포함되어 있습니다. Operation
은 완료 후 자동으로 삭제됩니다.
프로젝트에 Firebase 앱 추가
iOS, Android 및 웹 앱을 비롯한 다양한 앱에서 FirebaseProject
를 사용할 수 있습니다. 이 섹션에서는 프로그래밍 방식으로 Firebase 앱을 기존 FirebaseProject
에 추가하는 방법을 배웁니다. Firebase 콘솔 에서 기존 Firebase 프로젝트에 Firebase 앱을 추가할 수도 있습니다.
Firebase 프로젝트에 추가할 Firebase 앱 유형을 선택하세요.
Firebase 프로젝트를 Google 애널리틱스 계정에 연결(선택사항)
기존 Google Analytics 계정 을 프로그래밍 방식으로 기존 FirebaseProject
에 연결할 수 있습니다. 프로젝트 설정 의 통합 탭에서 기존 Firebase 프로젝트를 Google 애널리틱스에 연결할 수도 있습니다.
projects.addGoogleAnalytics
를 호출하려면 analytics_resource
가 필요하며 이는 analyticsAccountId
또는 analyticsPropertyId
일 수 있습니다.
기존
analyticsAccountId
를 지정하여 지정된 계정 내에서 새 Google 애널리틱스 속성을 프로비저닝하고 새 속성을 Firebase 프로젝트와 연결합니다.기존
analyticsPropertyId
를 지정하여 Google 애널리틱스 속성을 Firebase 프로젝트와 연결합니다.
Google Analytics 웹사이트 에서 귀하의 analyticsAccountId
및 기존 analyticsPropertyId
를 모두 찾을 수 있습니다.
projects.addGoogleAnalytics
를 호출할 때:
첫 번째 확인은 Google Analytics 속성의 기존 데이터 스트림이 FirebaseProject의 기존
FirebaseProject
앱과 일치하는지 확인합니다(데이터 스트림과 연결된packageName
또는bundleId
기반). 그런 다음 해당하는 경우 데이터 스트림과 앱이 연결됩니다. 이 자동 연결은 Android 앱 및 iOS 앱에만 적용됩니다.Firebase 앱에 해당하는 데이터 스트림이 없으면 각 Firebase 앱에 대한 Google 애널리틱스 속성에 새 데이터 스트림이 프로비저닝됩니다. 새 데이터 스트림이 이전에 Analytics 속성의 데이터 스트림과 연결된 경우에도 웹 앱에 대해 항상 프로비저닝됩니다.
웹 로그 분석 문서 에서 Google 웹로그 분석 계정의 계층 구조 및 구조에 대해 자세히 알아보세요.
요구
projects.addGoogleAnalytics
호출합니다.
project.addGoogleAnalytics
에 대한 예제 호출에 대한 요청 본문에서 Google Analytics 계정 analyticsAccountId
를 지정합니다. 이 호출은 새 Google Analytics 속성을 프로비저닝하고 새 속성을 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.addGoogleAnalytics
호출 결과는 Operation
입니다. 프로젝트에 대한 다른 Firebase 관련 엔드포인트를 호출하려면 먼저 작업이 성공해야 합니다.
작업이 성공적인지 확인하려면 done
값이 true
이고 response
이 analyticsDetails
유형이 될 때까지 operations.get
에 대해 operations.get을 호출할 수 있습니다. 작업이 실패하면 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
이 true 이고 response
유형이 analyticsDetails
이므로 FirebaseProject
가 이제 지정된 Google Analytics 계정에 연결되었습니다. Operation
은 완료 후 자동으로 삭제됩니다.
프로젝트의 기본 위치 마무리(선택 사항)
Firebase 프로젝트에서 Cloud Firestore, Cloud Storage 또는 App Engine 앱을 사용하는 경우 프로젝트의 기본 Google Cloud Platform(GCP) 리소스 위치 를 프로그래밍 방식으로 마무리할 수 있습니다. Firebase 콘솔 에서 위치를 선택할 수도 있습니다.
이 위치를 설정하기 전에 프로젝트 위치 선택에서 프로젝트 에 가장 적합한 위치 정보를 확인하세요. 또한 프로젝트의 유효한 위치 목록을 반환하려면 projects.availableLocations
를 호출해야 합니다. 프로젝트가 GCP 조직의 일부인 경우 조직 정책에 따라 프로젝트에 유효한 위치가 제한될 수 있기 때문입니다.
이 defaultLocation.finalize
메서드를 호출하면 요청 본문에 제공한 locationId
에 기본 Cloud Storage 버킷 이 있는 App Engine 애플리케이션이 생성됩니다.
Project
에 이미 App Engine 애플리케이션이 있거나 이 defaultLocation.finalize
메소드가 이전에 호출된 경우 기본 GCP 리소스 위치가 이미 지정되었을 수 있습니다.
요구
projects.defaultLocation.finalize
를 호출합니다. 요청 본문을 구성하는 방법은 다음과 같습니다.
필수의:
-
locationId
: Cloud Firestore 또는 Cloud Storage와 같이 위치 설정이 필요한 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.finalize
호출의 결과는 Operation
입니다. 프로젝트에 대한 다른 Firebase 관련 엔드포인트를 호출하려면 먼저 작업이 성공해야 합니다.
작업이 성공적인지 확인하려면 done
값이 true
이고 response
이 google.protobuf.Empty
유형이 될 때까지 operations.get
에 대해 operations.get을 호출할 수 있습니다. 작업이 실패하면 응답 본문 error
는 google.rpc.Status
유형이 됩니다. Operation
은 완료 후 자동으로 삭제됩니다.