Flutter app giving UNAUTHENTICATED errors when calling Firebase cloud functions directly

1,227
  1. first update the firebase tools and dependencies to latest.

https://firebase.google.com/docs/functions/get-started?authuser=0#set-up-node.js-and-the-firebase-cli

npm install firebase-functions@latest firebase-admin@latest --save

npm install -g firebase-tools

  1. after deploy

  2. go to Google cloud console(GCP) not the firebase console GCP sidebar > Cloud functions > select your function go to PERMISSIONS >ADD > "allUsers"> Firebase > Firebase Viewer

do this at your own risk iam not any cloud devloper . i dont know the risk of adding allUsers like this iam new to flutter devlopment

enter image description here

Share:
1,227
Sammy
Author by

Sammy

Updated on November 21, 2022

Comments

  • Sammy
    Sammy over 1 year

    I tried using firebase cloud functions oncall method directly from my FLUTTER app and it keeps giving me an UNAUTHENTICATED error even when I am logged in Flutter app code

    CloudFunctions function = CloudFunctions.instance;
    final HttpsCallable createCallable = function.getHttpsCallable(functionName: 'two_create')
      ..timeout = const Duration(seconds: 30);
    
    try {
      final HttpsCallableResult result = await createCallable.call({
        'stay': 'con50',
        'open': false
      });
    
      print(result.data);
    }on CloudFunctionsException catch(e){
      print('-----------------------------------------------');
      print(e.code); print(e.message); print(e.details);
      print('-----------------------------------------------');
    }
    
    dynamic user = await FirebaseAuth.instance.currentUser();
    print(user.uid);
    

    I got this error

    I/flutter (19466): -----------------------------------------------
    I/flutter (19466): UNAUTHENTICATED
    I/flutter (19466): UNAUTHENTICATED
    I/flutter (19466): null
    I/flutter (19466): -----------------------------------------------
    I/flutter (19466): eMTX6OcYPOSeYdimmCSqjbnnmWM2
    

    I tried printing out the uid to show I am currently signed in and I am currently using an android device for testing.

    This is the function I am calling from my app

    exports.two_create = functions.https.onCall(async (context,data)=>{
        var oncall = require('./httponcall');
    
        var text = await oncall.create(admin,allRef.one2,context,data);
        return text;
    })
    

    And I didn't get any logs from Firebase console when it was triggered

    • Doug Stevenson
      Doug Stevenson about 4 years
      Please edit the question to show the function code that you're trying to invoke, and any logs that it might be generating.
    • Doug Stevenson
      Doug Stevenson about 4 years
      If the function isn't actually being invoked (you find no logs), then contact Firebase support for assistance. support.google.com/firebase/contact/support
    • vitooh
      vitooh about 4 years
      This might be a matter of Node version. Please take a look: stackoverflow.com/questions/56120115/…
    • Hannah Stark
      Hannah Stark about 4 years
      I have the same issue!
    • Sammy
      Sammy about 4 years
      I tried changing the node version I still got the same error
    • Hannah Stark
      Hannah Stark about 4 years
      For me the issue was that the invoker was not set on console.cloud.google.com/functions/details
    • vitooh
      vitooh about 4 years
      I think @HannahStark is referring to this cloud.google.com/functions/docs/securing/…, have you checked that?