Java Firebase云函数错误代码和错误消息在Android上始终是内部的
我正在为我的应用开发一个功能,其中一个用户可以使用云功能向另一个用户发送通知。我的函数和通知按预期工作,但我无法以正确的方式处理错误,因为我的Android代码中总是出现“内部”错误 以下是我的Android代码:Java Firebase云函数错误代码和错误消息在Android上始终是内部的,java,android,node.js,firebase,google-cloud-functions,Java,Android,Node.js,Firebase,Google Cloud Functions,我正在为我的应用开发一个功能,其中一个用户可以使用云功能向另一个用户发送通知。我的函数和通知按预期工作,但我无法以正确的方式处理错误,因为我的Android代码中总是出现“内部”错误 以下是我的Android代码: public static Task<String> callFirebaseFunction(HashMap<String, Object> data, String funcion){ FirebaseFunctions mFunctions =
public static Task<String> callFirebaseFunction(HashMap<String, Object> data, String funcion){
FirebaseFunctions mFunctions = FirebaseFunctions.getInstance();
return mFunctions
.getHttpsCallable(funcion)
.call(data)
.continueWith(new Continuation<HttpsCallableResult, String>() {
@Override
public String then(@NonNull Task<HttpsCallableResult> task) throws Exception {
return (String) task.getResult().getData();
}
});
}
我在catch段中尝试了不同版本的代码,例如:
.catch( error => {
res.status(500).send('Error');
throw new functions.https.HttpsError('invalid-argument', 'Error');
});
我不知道我应该如何制作catch段,我真的需要得到我在节点中抛出的错误(不仅仅是“内部”)。需要以下格式:
exports.yourFunction = functions.https.onCall((data, context) => {
// ...
});
它和你正在使用的一个不同的东西。您仍然可以使用Android应用程序的HTTP请求访问它,但如果您想使用
mFunctions.getHttpScalable(function).call(data)
,则需要使用可调用的云函数,我在上面链接了该函数。它会发送状态标题HTTP500
,这是一个内部服务器错误
…可能将抛出
替换为返回新函数。https.HttpsError()
?错误代码必须是整数。。。例如htp400
或htp422
。我尝试了返回,结果相同。错误代码必须是字符串,以下是HttpsError的文档。但是,这些字符串用于常量,这些常量映射回常见的HTTP错误代码:…正确的错误代码应该是未经验证的
。。。这意味着res.status(401)
。一个人可以通过两种不同的方法通知错误(其中一种方法就足够了,你总是两种方法都有)。
.catch( error => {
res.status(500).send('Error');
throw new functions.https.HttpsError('invalid-argument', 'Error');
});
exports.yourFunction = functions.https.onCall((data, context) => {
// ...
});