背景
Firebaseで動かしてたサービスがcloud functionsへアクセスが出来なくなる問題に遭遇。
急にアクセス出来ないかつ心当たりなさすぎたのでハマった。一旦治ったのでまとめる
- cloud functions側でonCallのエンドポイントを作成。
functions.js
exports.func = functions.https.onCall((data) => {
// ...
});
- クライアントからfirebase.onRequestで呼び出す。
client.js
functions.httpsCallable("func");
エラー内容
functions側のlogは出ない。そもそもapiを叩けていない状況
consoleを見るとなんか出てる
cors、、、君だったのか、いやいやでもonCallはcors出ないんじゃなかったの?(詳しくは加筆)
blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
解決法
こちらの記事の通り。
https://qiita.com/tekunikaruza_jp/items/c068506ca0d6d648cc50
簡単にまとめると権限のエラー
- gcpでcloud functions 該当の関数にアクセス
- 権限 > 追加でallusersにすれば良い。
元々allUsersを許容していた関数を作り直した際に権限がリセットされたことが原因?
とりあえず解決するのだが、allUsersってそもそも良いんだっけ?
もうちょっと調査する必要がありそう。
続