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 [email protected] [email protected] --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

Share:
1,227
Sammy
Author by

Sammy

Updated on November 21, 2022

Comments

  • Sammy
    Sammy about 1 month

    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