почему ошибка, генерируемая функцией вызываемого облака, не срабатывает при прослушивании ошибок? - PullRequest
0 голосов
/ 08 февраля 2020

, поэтому у меня есть функция вызываемого облака:

exports.verifiedUserDeactivateTheEvent = functions.https.onCall(async (data, context) => {

    const eventID = data.eventID
    const verifiedUserID = context.auth.uid

   try {

    // check user
    const verifiedUserDocumentSnapshot = await db.doc(`users/${verifiedUserID}`).get()

    if (!verifiedUserDocumentSnapshot.exists || verifiedUserDocumentSnapshot.data().verified === false) {
        throw new functions.https.HttpsError('Invalid User', 'Invalid User')
    }

    // rest of the code

    return "success"


  } catch(error) {
    console.log(error)
    return error.message
  }



})

, если пользователь недействителен или не авторизован, тогда он выдаст сообщение httpsError «Неверный пользователь»

Я использую это в вызываемой функции в моем Android приложении

fun verifiedUserDeactivateTheEvent(eventID: String) : Task<String> {

    // Create the arguments to the callable function.
    val data = hashMapOf(
        "eventID" to eventID
    )


    return functions
        .getHttpsCallable("verifiedUserDeactivateTheEvent")
        .call(data)
        .continueWith { task ->
            val result = task.result?.data as String
            result
        }


}

и используйте его вот так

verifiedUserDeactivateTheEvent(selectedEvent.eventID).addOnSuccessListener {
    toast(it) // the error message will be shown in here
}.addOnFailureListener {
    toast(it.localizedMessage) // not in here
}

Я ожидаю, что сообщение об ошибке будет показано на onFailureListener, но это сообщение об ошибке строки все еще отображается в onSuccessListener. Мне нужно установить различные действия, если ошибка существует или нет

как сделать так, чтобы ошибка https, вызванная вызываемой функцией, была показана в onFailureListener?

1 Ответ

0 голосов
/ 08 февраля 2020

Согласно документации API для HttpsError , код ошибки должен быть одним из перечисленных здесь . Ваш выбор:

"ок" | "отменено" | "неизвестный" | "неверный аргумент" | "срок превышен" | "не найден" | "уже существует" | "разрешение отказано" | "истощенный ресурс" | "провал-предварительное условие" | "прервано" | "вне диапазона" | "невыполненный" | "внутренний" | "недоступен" | «потеря данных» | «unauthenticated»

Они сопоставляются с кодами ответов об ошибках HTTP, которые определяют, как клиент будет обрабатывать ответ.

Попробуйте вместо этого использовать «deniedled denied», если «Invalid User»:

throw new functions.https.HttpsError('permission-denied', 'Invalid User')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...