Firebaseクラウド関数「クライアントにはこのサーバーからURL /200を取得する権限がありません」質問する

Firebaseクラウド関数「クライアントにはこのサーバーからURL /200を取得する権限がありません」質問する

Firebase クラウド関数を作成しました:

exports.deleteAfterSevenDays = functions.https.onRequest((req, res) => {...

関数をデプロイし、関数 URL を取得しました。ブラウザからこの URL を要求すると、次のメッセージが表示されます。

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

Spark プランには制限があると思ったので、Firebase Blaze プランにアップデートしましたが、まだ動作しません。

Firebase クラウド関数のログに、「関数の実行に 572 ミリ秒かかり、ステータス コード 302 で終了しました」と書かれています。

私の cron ジョブは、「実行失敗が多すぎるため、自動的に無効になりました」。

何が問題か分かりますか?

ベストアンサー1

クラウド機能には、権限に関係なくどこからでも誰からでもこの機能を呼び出すために、「すべてのユーザー」と呼ばれるメンバーを持つロールが必要です。

許可なし:

  1. クラウド機能タブに移動する
  2. クラウド機能を選択してください(チェックボックス)
  3. 右側の権限タブの下にある「メンバーを追加」をクリックします
  4. 「新規メンバー」の下に「allUsers」と入力します
  5. 役割として「Cloud Functions -> Cloud Functions Invoker」を選択します
  6. 保存
  7. ブラウザに貼り付けるだけでクラウド機能をテストできます

承認あり:

クラウド機能に認証を設定することは常に良い習慣です

注: 「403 禁止 - クライアントに URL を取得する権限がありません」というエラーをスローするクラウド関数は、承認されたユーザーが呼び出す必要があります。

簡単なテスト:

  1. 上部のCloud Shell(アイコン)ターミナルをクリックしますページの

  2. タイプ:gcloud auth print-identity-token

  3. 生成されたトークンをコピーする

  4. クラウド関数の呼び出し時に渡される認証キーの作成

    4.1Authorization: bearer generated_token

  5. クラウド関数を呼び出すときに上記の認証キーを使用します

注記:

  1. クラウド機能をすべてのユーザーに公開しないでください

おすすめ記事