在 HTTPS 可调用的 Firebase Cloud Functions 中,错误代码的名称是不是在 iOS 中可用?

Posted

技术标签:

【中文标题】在 HTTPS 可调用的 Firebase Cloud Functions 中,错误代码的名称是不是在 iOS 中可用?【英文标题】:In HTTPS-callable Firebase Cloud Functions, is the name of the error code available in iOS?在 HTTPS 可调用的 Firebase Cloud Functions 中,错误代码的名称是否在 iOS 中可用? 【发布时间】:2018-08-23 20:44:50 【问题描述】:

我从我的云函数中抛出了这个错误(HTTPS 可调用):

throw new functions.https.HttpsError('not-found', 'User account not found')

然后,在 android 上,我可以使用

获取第一个参数('not-found')
functions.getHttpsCallable("myFunc").call(data).addOnFailureListener(new OnFailureListener() 
                @Override
                public void onFailure(@NonNull Exception e) 
                    if(e instanceof FirebaseFunctionsException) 
                        FirebaseFunctionsException ffe = (FirebaseFunctionsException) e;
                        FirebaseFunctionsException.Code code = ffe.getCode();
                        String errorName = code.name()
                )

errorName 就是那个参数。

但在 ios 上,错误代码没有“名称”。

functions.httpsCallable("myFunc").call(data)  (result, error) in
        if let error = error as NSError? 
            if error.domain == FunctionsErrorDomain 
                let code = FunctionsErrorCode(rawValue: error.code)
                let message = error.localizedDescription
                let details = error.userInfo[FunctionsErrorDetailsKey]
            
        
    

我得到的只是一个 int 代码和第二个参数('找不到用户帐户')。错误名称在某处可用吗?我希望使用该名称来处理不同的错误。

【问题讨论】:

【参考方案1】:

我找到了我正在寻找的枚举:

安卓:

@Override
public void onFailure(@NonNull Exception e) 
    FirebaseFunctionsException ffe = (FirebaseFunctionsException) e;
    FirebaseFunctionsException.Code code = ffe.getCode();
    if(code.equals(FirebaseFunctionsException.Code.ALREADY_EXISTS)) 
        // handle error
    

iOS:

functions.httpsCallable("myFunc").call(data)  (result, error) in
    if let error = error as NSError? 
        if error.domain == FunctionsErrorDomain 
            let code = FunctionsErrorCode(rawValue: error.code)
            if code == FunctionsErrorCode.alreadyExists 
                // handle error
            
        
     
 

【讨论】:

以上是关于在 HTTPS 可调用的 Firebase Cloud Functions 中,错误代码的名称是不是在 iOS 中可用?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Firebase CLI shell 测试可调用的云函数

Firebase 可调用函数 + CORS

Firebase可调用函数+ CORS

如何在 Firebase 可调用云函数上引发错误?

Firebase 可调用函数失败 CORS 重定向

从 firebase 可调用函数接收返回的数据