L'API REST Firebase Management permet pour la configuration et la gestion programmatiques des projets Firebase, y compris Ressources et applications Firebase.
Cette présentation décrit le workflow général permettant d'ajouter des ressources Firebase et d'applications à un Google Cloud existant projet qui n'utilise pas les services Firebase pour le moment.
Vous pouvez accéder directement à des sections spécifiques de cette page si vous souhaitez seulement:
- Ajouter des services Firebase à votre projet
- Ajouter des applications Firebase à votre projet Firebase
- Associer votre projet Firebase à un compte Google Analytics
- Finaliser l'emplacement par défaut de votre projet
Avant de suivre les étapes indiquées sur cette page, assurez-vous de activer l'API ;
Pour en savoir plus sur la gestion des accès pour l'API Firebase Management, consultez la page l'API Cloud Identity and Access Management (IAM) documentation.
Avant de commencer
Avant de commencer, vous devez activer l'API Management pour votre projet Google Cloud et générer votre jeton d'accès.
Activer l'API REST de gestion pour votre projet Google Cloud
Si vous ne l'avez pas déjà fait, vous devez activer API Firebase Management à utiliser avec votre projet Google Cloud.
- Ouvrez la page API Firebase Management dans la console Google APIs.
- Lorsque vous y êtes invité, sélectionnez votre projet Google Cloud.
- Cliquez sur Activer sur la page de l'API Firebase Management.
Générer votre jeton d'accès à l'API
Voici un exemple pour Node.js qui récupère votre jeton d'accès.
Tout d'abord, si vous n'êtes pas dans un environnement Google Cloud, définissez
GOOGLE_APPLICATION_CREDENTIALS
au chemin d'accès
clé de compte de service.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
Windows
Avec PowerShell :
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
Utilisez ensuite le SDK Admin Firebase pour obtenir un jeton d'accès à partir de votre service identifiants du compte:
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);
});
}
Rechercher le nom de ressource de votre projet
Vous trouverez les Google Cloud projets disponibles pour ajouter Firebase services.
DEMANDER
Appeler
availableProjects.list
Le corps de la requête pour cet appel doit être vide.
Voici un exemple permettant à Node.js de demander la liste des Google Cloud disponibles projets:
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);
}
}
RÉSULTAT
Le corps de la réponse d'un appel à availableProjects.list
contient une liste de
ProjectInfo
d'objets. Si la liste des projets est trop longue, le corps de la réponse contient également un nextPageToken
que vous pouvez utiliser comme paramètre de requête pour obtenir la page suivante de projets.
Voici un exemple de corps de réponse à un appel availableProjects.list
:
{
"projectInfo": [
{
"project": "projects/first-cloud-project",
"displayName": "First Cloud Project"
},
{
"project": "projects/second-cloud-project",
"displayName": "Second Cloud Project"
}
]
}
Cet exemple de réponse comporte deux projets Google Cloud pouvant contenir Firebase
et services qui leur sont ajoutés. Notez que le champ project
fournit les informations
nom de ressource unique d'un projet.
Vous pouvez utiliser n'importe quelle valeur project
répertoriée dans la réponse de
availableProjects.list
pour ajouter des services Firebase ou
ajouter des applications à votre projet.
Dans la section suivante, nous allons ajouter des services Firebase à First Cloud Project
en utilisant
le nom de la ressource projects/first-gcp-project
.
Ajouter des services Firebase à votre projet
Les projets Google Cloud peuvent profiter des services proposés par Firebase. Dans dans cette section, vous apprendrez à ajouter des services Firebase Google Cloud de manière programmatique. Notez que vous pouvez aussi ajouter Firebase à votre projet Google Cloud existant dans la console Firebase.
DEMANDER
Appeler
projects.addFirebase
Le corps de la requête pour cet appel doit être vide.
Voici un exemple pour Node.js permettant d'ajouter des services Firebase à votre projet Google Cloud :
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']);
}
}
RÉSULTAT
Le résultat d'un appel à projects.addFirebase
est
Operation
Avant de commencer
peut appeler d'autres points de terminaison associés à Firebase pour votre projet, l'opération doit
pour réussir.
Pour vérifier si l'opération aboutit, vous pouvez appeler
operations.get
jusqu'à ce que la valeur de done
soit true
et que son response
soit de
saisissez FirebaseProject
. Si l'opération échoue, le champ error
est défini sur
google.rpc.Status
Voici le corps de la réponse d'un appel 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"
}
}
}
Étant donné que done
est true
et que le type response
est un FirebaseProject
, le projet Google Cloud dispose désormais de services Firebase. La réponse contient également
d'autres informations utiles concernant votre FirebaseProject
nouvellement créé, comme son
projectNumber
et son resources
par défaut. Le Operation
est automatiquement
supprimés à la fin de l'opération.
Ajouter des applications Firebase à votre projet
De nombreuses applications différentes peuvent utiliser un FirebaseProject
, y compris les applications iOS, Android et Web. Dans cette section, vous apprendrez à ajouter des applications Firebase à vos applications
FirebaseProject
de façon programmatique. Notez que vous pouvez également ajouter des applications Firebase
votre projet Firebase existant dans la console Firebase.
Sélectionnez un type d'application Firebase à ajouter à votre projet Firebase.
Vous pouvez ajouter une application Android Firebase à votre projet Firebase existant.
DEMANDER
Appeler
projects.androidApps.create
Voici comment créer le corps de votre requête:
Obligatoire :
packageName
: nom de package canonique de l'application Android, tel qu'il le ferait dans la console développeur de Google Play.
Facultatif, mais recommandé:
displayName
: nom à afficher de l'application attribué par l'utilisateur. Cette valeur est utile pour retrouver votre application plus tard dans la console Firebase.
Dans le corps de la requête de notre exemple, nous utiliserons packageName
et displayName
:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Voici un exemple permettant à Node.js d'ajouter une application Android pour Firebase à votre application projet:
const fetch = require('node-fetch');
async function addAndroidApp(projectId, displayName, packageName) {
const accessToken = getAccessToken();
const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/androidApps';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + accessToken,
},
body: JSON.stringify({
'displayName': displayName,
'packageName': packageName
}),
};
try {
const rawResponse = await fetch(uri, options);
const resp = await rawResponse.json();
console.log(resp);
} catch(err) {
console.error(err['message']);
}
}
RÉSULTAT
Le résultat d'un appel à projects.androidApps.create
est
Operation
Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit aboutir.
Pour vérifier si l'opération aboutit, vous pouvez appeler operations.get
sur l'opération jusqu'à ce que la valeur de done
soit true
et que son response
soit de type AndroidApp
. Si l'opération échoue, son error
est défini sur google.rpc.Status
.
Voici le corps de réponse d'un appel operations.get
:
{
"name": "operations/...",
"done": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AndroidApp",
"name": "projects/first-cloud-project/androidApps/...",
"appId": "...",
"displayName": "My Firebase Android App",
"projectId": "first-cloud-project",
"packageName": "com.firebase.android"
}
}
Étant donné que done
est true
et que le type response
est un AndroidApp
, FirebaseProject
dispose désormais d'un AndroidApp
. La réponse contient également d'autres
des informations utiles sur votre nouvelle application Android pour Firebase, comme
appId
Firebase unique. Le Operation
est automatiquement supprimé au bout de
l'achèvement.
Ajouter des certificats SHA
Vous pouvez ajouter des certificats SHA à n'importe quelle application Android Firebase existante en appelant
projects.androidApps.sha.create
Le corps de la requête pour cet appel de méthode doit comporter un champ name
vide.
Le résultat de cet appel est une nouvelle instance de
ShaCertificate
Lorsque vous appelez projects.androidApps.sha.create
, vous devez fournir un identifiant
Hachage du certificat SHA-1 ou SHA-256 Vous pouvez obtenir le hachage SHA de votre signature
avec la commande signingReport
Gradle:
./gradlew signingReport
Pour en savoir plus, consultez la page API Google pour Android.
Associer votre projet Firebase à un compte Google Analytics (facultatif)
Vous pouvez associer un compte Google Analytics existant à votre FirebaseProject
existant de manière programmatique. Notez que vous pouvez aussi associer
projet Firebase vers Google Analytics dans
Intégrations
de l'onglet Paramètres du projet.
L'appel à projects.addGoogleAnalytics
nécessite un analytics_resource
,
qui peut être une analyticsAccountId
ou une analyticsPropertyId
:
Spécifiez un
analyticsAccountId
existant pour provisionner une nouvelle propriété Google Analytics dans le compte spécifié et associez-la à votre projet Firebase.Spécifiez un
analyticsPropertyId
existant pour associer la propriété avec votre projet Firebase.
Vous trouverez votre analyticsAccountId
et tous les analyticsPropertyId
existants sur le site Web de Google Analytics.
Lorsque vous appelez projects.addGoogleAnalytics
:
La première vérification permet de déterminer si des flux de données existants la propriété Analytics correspond à toutes les applications Firebase existantes dans votre
FirebaseProject
(selon lepackageName
ou lebundleId
associé à le flux de données). Ensuite, le cas échéant, les flux de données et les applications sont associés. Notez que cette association automatique ne s'applique qu'aux applications Android et iOS.Si aucun flux de données correspondant n'est trouvé pour vos applications Firebase, de nouveaux flux de données sont provisionnés dans la propriété Google Analytics pour chacune de vos applications Firebase. Notez qu'un nouveau flux de données est toujours provisionné pour un même si elle était auparavant associée à un flux de données dans votre Google Analytics.
Pour en savoir plus sur la hiérarchie et la structure des comptes Google Analytics, consultez le Documentation Analytics
DEMANDER
Appeler
projects.addGoogleAnalytics
Dans le corps de la requête pour notre exemple d'appel à project.addGoogleAnalytics
,
indiquez notre compte Google Analytics analyticsAccountId
. Cet appel provisionne une nouvelle propriété Google Analytics et l'associe à FirebaseProject
.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Voici un exemple permettant à Node.js d'associer un projet Firebase à un projet Google Analytics compte:
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']);
}
}
RÉSULTAT
Le résultat d'un appel à projects.addGoogleAnalytics
est
Operation
Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit aboutir.
Pour vérifier si l'opération aboutit, vous pouvez appeler operations.get
au niveau de la
jusqu'à ce que la valeur de done
soit true
et que response
soit de type
analyticsDetails
Si l'opération échoue, le champ error
est défini sur
google.rpc.Status
Voici le corps de réponse d'un appel operations.get
:
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
Comme done
est "true" et que le type response
est analyticsDetails
,
FirebaseProject
est désormais associé au compte Google Analytics spécifié. La
Operation
est automatiquement supprimé une fois l'opération terminée.
Finaliser l'emplacement par défaut de votre projet (facultatif)
Si votre projet Firebase utilise Cloud Firestore, Cloud Storage ou une application App Engine, vous pouvez finaliser l'environnement Google Cloud par défaut Emplacement des ressources de la plate-forme (GCP) pour votre projet de manière automatisée. Notez que vous pouvez également sélectionner un emplacement dans la Console Firebase.
Avant de définir ce lieu, consultez la section Sélectionner des emplacements pour vos
projet pour obtenir des informations sur l'emplacement le plus adapté
votre projet. Vous devez également appeler projects.availableLocations
pour renvoyer une liste des emplacements valides pour votre projet. En effet, si votre projet fait partie d'une organisation Google Cloud, vos règles d'administration peuvent limiter les emplacements valides pour votre projet.
L'appel de cette méthode defaultLocation.finalize
crée une App Engine.
une application avec un Cloud Storage par défaut
bucket
situé dans le
locationId
que vous indiquez dans le corps de la requête.
Il est possible que l'emplacement par défaut des ressources GCP ait déjà été spécifié si le
Project
a déjà une application App Engine ou celle-ci
La méthode defaultLocation.finalize
a déjà été appelée.
DEMANDER
Appeler
projects.defaultLocation.finalize
Voici comment créer le corps de votre requête:
Obligatoire :
locationId
: emplacement de stockage de vos données pour les services GCP qui nécessitent un paramètre de localisation, comme Cloud Firestore ou Cloud Storage
{
"locationId": "us-west2"
}
Voici un exemple permettant à Node.js de finaliser l'emplacement par défaut de votre projet:
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']);
}
}
RÉSULTAT
Le résultat d'un appel à projects.defaultLocation.finalize
est
Operation
Avant de pouvoir appeler d'autres points de terminaison liés à Firebase pour votre projet, l'opération doit aboutir.
Pour vérifier si l'opération aboutit, vous pouvez appeler operations.get
au niveau de la
jusqu'à ce que la valeur de done
soit true
et que son response
soit de type
google.protobuf.Empty
Si l'opération échoue, le corps de la réponse
error
sera de type google.rpc.Status
. Le Operation
est automatiquement
supprimés à la fin de l'opération.