web-dev-qa-db-ja.com

エラー:禁止クライアントには、このサーバーからURL / api / appを取得する権限がありません

Firebaseアカウント内にあるJSON apiにアクセスできません。ターミナルに「firebase deploy」と入力すると、次のURLが返されます。

https://myProjectID.firebaseapp.com

それをブラウザに入力すると、Index.htmlページが表示されるので、通常は機能します。しかし、私はAPIにアクセスしようとしているので、「firebase serve」を実行すると機能しますが、デプロイを実行すると機能しません。以下を返します

エラー:禁止クライアントには、このサーバーからURL/api/appを取得する権限がありません

ただし、私のGmailアカウントはFirebaseで許可されており、すべてがチェックアウトされますが、Firebaseとクラウドの機能ではAPIにアクセスできません。助けてください。

これは私のコードです。

INDEX.JS

const functions = require("firebase-functions");
const server = require(__dirname,"../server.js");
const api = functions
  .runWith({ memory: "2GB", timeoutSeconds: 120 })
  .https.onRequest(server);

module.exports = {
  api
};

SERVER.JS

const express = require("express");
const path = require("path");
const logger = require("./middleware/logger.js");
const cors = require("cors");

const routes = require("./router/routes.js");

let app = express();

// Init Middleware
app.use(logger);

// Set static folder
app.use(express.static(path.join(__dirname, "public")));
app.use(cors({ Origin: true }));
app.use("/", routes);

module.exports = app;

FIREBASE.JSON

{
  "database": {
    "rules": "database.rules.json"
  },
  "hosting": {
    "public": "public",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "rewrites": [
      {
        "source": "**",
        "function": "server"
      }
    ]
  }
}
2
RaineOxy

それについて調べてみると、これはさまざまな理由で発生する可能性のあるエラーのようです。通常、これはFirebaseでの認証方法が原因です。

それを考慮して、エラーを修正するための代替案について、詳細については、以下のコミュニティ投稿を参照することをお勧めします。

これらの1つが問題の修正に役立つと思います。

情報が役に立ったかどうかを教えてください!

1
gso_gabriel

GCP Consoleで解決する必要があります。次の手順に従ってください。

  1. GCP Console に移動してログインします
  2. トップメニューで、対応するFirebaseプロジェクトを選択します
  3. 左側のメニューでCloud Functionsに移動します
  4. 関数のチェックボックスをクリックします(関数の名前ではありません)。
  5. 選択したら、右側のメニューで[メンバーを追加]を選択します
  6. 「新しいメンバー」にallUsersと入力します
  7. 関数の選択バーで、[Cloud Functions]-> [Cloud functions invoker]を選択します
  8. [保存]をクリックし、ポップアップ警告で[パブリックアクセスを許可]をクリックします

そして、あなたは行ってもいいです!