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>
localStorage.setItem(process.env.REACT_APP_LOCAL_STORAGE, JSON.stringify(user))
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é.