The Bug
You're attempting to deploy a Firebase Cloud Function and have it serve a request, but you're presented with a screen saying "An application is requesting permission to access your Google Account"
I work for Akkio, where I'm building out a no-code predictive AI platform. If you're looking to harness the power of AI without needing a data scientist, give us a try!
The Solution
If you Google around, you'll see some advice that Cloud Functions are only supported in the us-central1
region, but I'm pretty sure they've expanded by now. The reason I was getting this issue was related to some inconsistency with what regions everything was in.
You need to specify the region when defining your cloud function:
const main = express();
main.use("/api/v1", app);
main.use(bodyParser.json());
main.use(bodyParser.urlencoded({ extended: false }));
export const creditCards = functions.region("us-east1").https.onRequest(main);
Secondly, as noted on the docs page here, if you fail to specify the region in your rewrites, it tries to guess the right region from your source code, defaulting to us-central1
if it can't figure it out. You need to specify this region in your rewrites as well:
"hosting": {
"public": "public",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "/api/v1/**",
"function": "creditCards",
"region": "us-east1"
}
]
}
After fixing both of those, I was able to test in the local emulator and see the function successfully respond once I hit the endpoint.
Please note that while it's not mandatory to have all your different resources running in the same region, it's best practice to do so for latency reasons. I personally keep my Cloud Functions and Firestore in the same region.
Top comments (0)