Les revendications utilisateur personnalisées peuvent-elles être mises

Les revendications utilisateur personnalisées peuvent-elles être mises à jour via l'API REST Firebase ?

Je dois mettre à jour les réclamations des utilisateurs et je préfère le faire avec php. La mise à jour de "displayName" ou d'autres informations fonctionne très bien, mais lorsque j'essaie d'envoyer des attributs personnalisés dans le corps de la requête, j'obtiens une erreur "INSUFFICIENT_PERMISSION". Cette opération n'est-elle pas possible ou c'est juste mon code ?

Le code PHP :

$ch = curl_init(
    'https://www.googleapis.com/identitytoolkit/v3/relyingparty'.
    '/setAccountInfo?key=[API_KEY]'
);
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json'
    ],
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => \json_encode([
        'idToken' => [FIREBASE_ID_TOKEN],
        'customAttributes' => \json_encode([
             'admin' => true
         ]),
    ]),
    CURLOPT_RETURNTRANSFER => true
]);
$res = curl_exec($ch);

Et l'erreur complète renvoyée en réponse :

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "INSUFFICIENT_PERMISSION"
   }
  ],
  "code": 400,
  "message": "INSUFFICIENT_PERMISSION"
 }
}

J'ai testé le remplacement de 'customAttributes' par 'customClaims' et non l'encodage des revendications, sans succès. Le tout effectué sous connexion https.

Montrez la meilleure réponse

Pour mettre à jour les revendications personnalisées d'un utilisateur, les informations d'identification de l'utilisateur fournies via un jeton d'identification ne suffisent pas : un utilisateur n'est pas autorisé à définir ses propres revendications personnalisées (qui sont considérées comme des propriétés administratives, et non comme des propriétés modifiables par l'utilisateur).

Pour pouvoir définir des revendications personnalisées, vous devez authentifier les demandes avec les informations d'identification du compte de service. Cette tâche et d'autres tâches administratives sont fournies par l'un des SDK d'administration Firebase (https://firebase.google.com /docs/admin).

Malheureusement, Google ne fournit pas de SDK d'administration officiel pour PHP - mais heureusement, il en existe un non officiel que vous pouvez trouver sur https://github.com/kreait/firebase-php (Avertissement : je suis l'auteur :))