Firebase + Flutter - 云函数 onCall 导致 Android 应用程序出现“未经身份验证”错误

dsg*_*g38 5 android firebase flutter google-cloud-functions

我已将以下测试https.onCall函数部署到 firebase 上的 Cloud Functions 中 - 使用节点 10 部署:

export const helloWorld = functions.https.onCall((data, context) => {

    return {
        "message": "Hello, world",
    }

}); 
Run Code Online (Sandbox Code Playgroud)

从节点环境中测试时,此函数按预期返回。

但是,在我的 flutter (android) 应用程序中 - 使用FlutterCloud 函数插件,尽管已登录(通过电话号码身份验证),但仍收到以下身份验证错误:

颤振代码:

void _checkAuth() async { 

    print("Check auth");
    final FirebaseAuth _auth = FirebaseAuth.instance;
    var user = await _auth.currentUser();

    print(user.toString());

    _testFunCall();
}

void _testFunCall() async {
    HttpsCallable callable = CloudFunctions.instance
        .getHttpsCallable(functionName: 'helloWorld');

    try {
        final HttpsCallableResult result = await callable.call();
        print(result.data);

    } on CloudFunctionsException catch (e) {
        print('caught firebase functions exception');
        print(e.code);
        print(e.message);
        print(e.details);
    } catch (e) {
        print('caught generic exception');
        print(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:

I/flutter ( 4662): caught firebase functions exception
I/flutter ( 4662): UNAUTHENTICATED
I/flutter ( 4662): Unauthenticated
I/flutter ( 4662): null
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

dsg*_*g38 2

问题在于部署到云功能时使用 Node 10。

Node 10 目前处于测试阶段。切换到节点 8 并且工作正常:

package.json您的云功能目录中,切换:

  "engines": {
    "node": "10"
  },
Run Code Online (Sandbox Code Playgroud)

到:

  "engines": {
    "node": "8"
  },
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,即使在节点 8 上也会出现此问题 (2认同)