web-dev-qa-db-fra.com

Utilisation de l'authentification anonyme Firebase, erreur, JSON non valide

Récemment, lorsque j'essaie de me connecter de manière anonyme avec Firebase, j'obtiens l'erreur suivante

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

La fonction que j'appelle est celle fournie dans la documentation

doSignInAnonymously = () => {

   this.auth.signInAnonymously()
}

Je ne comprends pas le code d'erreur car l'erreur 400 signifie un JSON non valide dans votre demande:

Vérifiez que le message JSON est correctement formaté et contient des champs valides (par exemple, en vous assurant que le bon type de données est transmis).

J'utilise une fonction fournie par l'API, donc je ne sais pas comment j'aurais pu l'implémenter incorrectement, ni ce que cela signifie exactement quand il dit ADMIN_ONLY_OPERATION, pourquoi la connexion anonyme aurait-elle quelque chose à voir avec un administrateur?

Quelqu'un a-t-il une expérience avec ce type d'erreur ou peut-il voir des erreurs évidentes dans mon utilisation de la fonction?

mon fichier firebase.js où j'ai toutes mes fonctions d'authentification.

import app from 'firebase/app'
import 'firebase/auth'
import 'firebase/database'
import * as firebase from 'firebase';

const config = {
  apiKey: process.env.REACT_APP_API_KEY,
  authDomain: process.env.REACT_APP_AUTH_DOMAIN,
  databaseURL: process.env.REACT_APP_DATABASE_URL,
  projectId: process.env.REACT_APP_PROJECT_ID,
  storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
  messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,
}

class Firebase {
  constructor() {
    app.initializeApp(config);

    /* Helper */

    this.fieldValue = app.firestore.FieldValue;
    this.emailAuthProvider = app.auth.EmailAuthProvider;

    /* Firebase APIs */

    this.auth = app.auth();
    this.db = app.firestore();
  }

  // *** Auth API ***

  // eslint-disable-next-line max-len
  doCreateUserWithEmailAndPassword = (email, password) => this.auth.createUserWithEmailAndPassword(email, password)

  // eslint-disable-next-line max-len
  doSignInWithEmailAndPassword = (email, password) => this.auth.signInWithEmailAndPassword(email, password)

  doSignInAnonymously = () => {

    this.auth.signInAnonymously()
  }

Code sur le site de l'appel:

<Button
        variant="contained"
        color="primary"
        onClick={() => firebase
              .doSignInAnonymously()
              .then(({ user }) => {
                localStorage.setItem(process.env.REACT_APP_LOCAL_STORAGE, JSON.stringify(user))
                history.Push(ROUTES.USER)
               })
              .catch(({ message }) => setErrMessage(message))
        }
>
Continue As Guest
</Button>
  • J'ai essayé de supprimer la ligne suivante car l'erreur est liée à un JSON mal formé, mais cela ne semble pas aider.
localStorage.setItem(process.env.REACT_APP_LOCAL_STORAGE, JSON.stringify(user))
10
Steve2056726

Accédez à Firebase console et vérifiez vos fournisseurs de connexion sous Connexion Onglet Méthodes du service Authentification et assurez-vous que Anonymous est activé.

8
Tal Zion