Vous pouvez utiliser l'API REST Google Cloud Identity Platform pour : gérer de manière automatisée le fournisseur d'identité (IdP) OAuth d'un projet Firebase configuration. Cette API vous permet de configurer les fournisseurs d'identité pour prendre en charge, mettre à jour, activer et désactiver le protocole OAuth actuel de votre projet, de configuration.
Obtenir l'autorisation
Avant de pouvoir appeler l'API REST, vous avez besoin d'un jeton d'accès OAuth 2.0 qui accorde Accès éditeur à votre projet Firebase. Par exemple, pour obtenir un jeton d'accès à l'aide d'un compte de service dans Node.js:
const googleAuth = require('google-auth-library');
const SCOPES = ['https://www.googleapis.com/auth/cloud-platform'];
async function getAccessToken() {
const serviceAccount = require('/path/to/service_account_key.json');
const jwtClient = new googleAuth.JWT(
serviceAccount.client_email,
null,
serviceAccount.private_key,
SCOPES,
null
);
return jwtClient.authorize().then((tokens) => tokens.access_token);
}
Ajouter une configuration de fournisseur d'identité OAuth
Pour ajouter une configuration de fournisseur d'identité (IdP) OAuth, envoyez le nouveau
configuration sur projects.defaultSupportedIdpConfigs
point de terminaison unique.
Vous devez spécifier l'ID du fournisseur d'identité et votre ID client. le code secret du client, que vous obtenez généralement sur le site pour les développeurs du fournisseur. Ici, sont les fournisseurs d'identité compatibles avec Firebase et leurs identifiants:
Fournisseur | ID du fournisseur d'identité |
---|---|
Apple | apple.com |
Apple Game Center | gc.apple.com |
facebook.com |
|
GitHub | github.com |
google.com |
|
Google Play Jeux | playgames.google.com |
linkedin.com |
|
Microsoft | microsoft.com |
twitter.com |
|
Yahoo | yahoo.com |
Par exemple, en utilisant Node.js:
const fetch = require('node-fetch');
const GCIP_API_BASE = 'https://identitytoolkit.googleapis.com/v2';
async function addIdpConfig(projectId, accessToken, idpId, clientId, clientSecret) {
const uri = `${GCIP_API_BASE}/projects/${projectId}/defaultSupportedIdpConfigs?idpId=${idpId}`;
const options = {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify({
name: `projects/${projectId}/defaultSupportedIdpConfigs/${idpId}`,
enabled: true,
clientId: clientId,
clientSecret: clientSecret,
}),
};
return fetch(uri, options).then((response) => {
if (response.ok) {
return response.json();
} else if (response.status == 409) {
throw new Error('IdP configuration already exists. Update it instead.');
} else {
throw new Error('Server error.');
}
});
}
(async () => {
const projectId = 'your-firebase-project-id';
const accessToken = await getAccessToken();
const idpId = 'facebook.com';
const clientId = 'your-facebook-client-id';
const clientSecret = 'your-facebook-client-secret';
try {
await addIdpConfig(projectId, accessToken, idpId, clientId, clientSecret);
} catch (err) {
console.error(err.message);
}
})().catch(console.error);
Si l'appel aboutit, il renvoie la configuration que vous venez de créer. Exemple :
{
name: 'projects/your-numerical-project-id/defaultSupportedIdpConfigs/facebook.com',
enabled: true,
clientId: 'your-facebook-client-id',
clientSecret: 'your-facebook-client-secret'
}
Si vous essayez de configurer un fournisseur d'identité déjà configuré pour votre projet, l'appel renvoie l'erreur HTTP 409. Dans ce cas, vous pouvez mettez à jour la configuration, comme décrit ci-dessous.
Mettre à jour la configuration d'un fournisseur d'identité OAuth
Activer ou désactiver un fournisseur d'identité OAuth, ou mettre à jour le client de votre projet
la configuration actuelle, commencez par obtenir la configuration actuelle du fournisseur en effectuant une requête
au point de terminaison projects.defaultSupportedIdpConfigs
.
Apportez ensuite les modifications souhaitées à la configuration et appuyez sur PATCH pour
configuration sur projects.defaultSupportedIdpConfigs
point de terminaison unique.
Par exemple, en utilisant Node.js:
async function getIdpCfg(projectId, accessToken, idpId) {
const uri = `${GCIP_API_BASE}/projects/${projectId}/defaultSupportedIdpConfigs/${idpId}`;
const options = {
method: 'GET',
headers: {
'Authorization': `Bearer ${accessToken}`
},
};
return fetch(uri, options).then((response) => {
if (response.ok) {
return response.json();
} else if (response.status == 404) {
throw new Error('IdP configuration not found. First add the IdP'
+ ' configuration to your project.');
} else {
throw new Error('Server error.');
}
});
}
async function updateIdpConfig(accessToken, idpCfg) {
const uri = `${GCIP_API_BASE}/${idpCfg.name}`;
const options = {
method: 'PATCH',
headers: {
'Authorization': `Bearer ${accessToken}`
},
body: JSON.stringify(idpCfg),
};
return fetch(uri, options).then((response) => {
if (response.ok) {
return response.json();
} else if (response.status == 404) {
throw new Error('IdP configuration not found. First add the IdP'
+ ' configuration to your project.');
} else {
throw new Error('Server error.');
}
});
}
(async () => {
const projectId = 'your-firebase-project-id';
const accessToken = await getAccessToken();
const idpId = 'facebook.com';
try {
// Get the IdP's current configuration.
const idpCfg = await getIdpCfg(projectId, accessToken, idpId);
// Update the configuration. (For example, disable the IdP.)
idpCfg.enabled = false;
await updateIdpConfig(accessToken, idpCfg);
} catch (err) {
console.error(err.message);
}
})().catch(console.error);
Si vous essayez de mettre à jour la configuration d'un fournisseur d'identité que vous n'avez jamais configuré pour votre projet, les appels renvoient une erreur HTTP 404. À la place, configurer un nouveau fournisseur d'identité, comme indiqué dans la section .