最近、Firebaseで匿名でサインインしようとすると、次のエラーが発生します
{"エラー":{"コード":400、 "メッセージ": "ADMIN_ONLY_OPERATION"、 "エラー":[{"メッセージ": "ADMIN_ONLY_OPERATION"、 "ドメイン": "グローバル"、 "理由": "無効"} ]}}
私が呼んでいる関数はドキュメントで提供されているものです
doSignInAnonymously = () => {
this.auth.signInAnonymously()
}
エラー400はリクエスト内の無効なJSONを意味するため、エラーコードを理解できません。
JSONメッセージの形式が正しく、有効なフィールドが含まれていることを確認してください(たとえば、正しいデータ型が渡されていることを確認してください)。
私はAPIが提供する関数を使用しているので、それを間違って実装した可能性があるか、またはADMIN_ONLY_OPERATION
、匿名でのサインインが管理者と関係があるのはなぜですか?
誰かがこのタイプのエラーの経験を持っていますか、関数の使用中に明らかなエラーを見ることができますか?
すべての認証機能があるfirebase.jsファイル。
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()
}
呼び出しサイトのコード:
<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))
Firebase console に移動し、AuthenticationサービスのSign-in MethodsタブにあるSign-in providerを確認しますAnonymousが有効になっていることを確認します。