web-dev-qa-db-ja.com

Firebase匿名認証の使用、エラー、無効なJSON

最近、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>
  • エラーは不正な形式のJSONに関連しているため、次の行を削除しようとしましたが、これは役に立たないようです。
localStorage.setItem(process.env.REACT_APP_LOCAL_STORAGE, JSON.stringify(user))
10
Steve2056726

Firebase console に移動し、AuthenticationサービスのSign-in MethodsタブにあるSign-in providerを確認しますAnonymousが有効になっていることを確認します。

8
Tal Zion