firebase / firebase/firebase-cpp-sdk

[Bug] Errors fail to return all data from error object.

オープン
#1,785 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
api: auth new type: question
主要言語
C++
スター
326
フォーク
137
平均マージ
3日 9時間
マージ済み PR(30日)
5

説明

### [REQUIRED] Please fill in the following fields:

* Pre-built SDK from the [website](https://firebase.google.com/download/cpp) or open-source from this repo: _____
* Firebase C++ SDK version: 13.0.0 (assuming flutterfire uses the latest version)
* Problematic Firebase Component: Auth (Auth, Database, etc.)
* Other Firebase Components in use: Firestore (Auth, Database, etc.)
* Platform you are using the C++ SDK on: Windows (Mac, Windows, or Linux)
* Platform you are targeting: Windows (iOS, Android, and/or desktop)

### [REQUIRED] Please describe the issue here:

(Please list the full steps to reproduce the issue. Include device logs, Unity logs, and stack traces if available.)

When signing in with email and password, my project has a 'beforeUserSignIn' blocking function running before logging in that throws an HttpsError. On android/ios/web, throwing an HttpsError within the blocking function can be detected by the client attempting login, with it able to read the contents (i.e. that the HttpsError is 'failed-precondition').

On Windows, errors from the blocking function are clobbered into 'unknown-error' and any extra data in the HttpError is inaccessible.

Login when the blocking function immediately returns without error works as intended.

It may be because the firebase C++ SDK doesn’t provide any field or method for accessing additional error details. I would probably need a way to return the entire object back.

(Was redirected from https://github.com/firebase/flutterfire/issues/17592, so if I need to give you any more information please let me know (or if this issue isn't relevant to this project))

#### Steps to reproduce:

Have you been able to reproduce this issue with just the [Firebase C++ quickstarts](https://github.com/firebase/quickstart-cpp) ?
What's the issue repro rate? (eg 100%, 1/5 etc)
I have not attempted this yet.

What happened? How can we make the problem occur?
This could be a description, log/console output, etc.

Using the example project on Windows, sign in with email and password whilst a blocking function has been configured and deployed.

You may need to configure the function in the Firebase Console at Authentication > Settings > Blocking Functions.

I was able to replicate the issue with this cloud function deployed.

If you have a downloadable sample project that reproduces the bug you're reporting, you will
likely receive a faster response on your issue.

#### Relevant Code:

min-viable-blocking.js
```
import { HttpsError, beforeUserSignedIn } from "firebase-functions/v2/identity";
import { setGlobalOptions } from 'firebase-functions/v2'

const functionConfig = {
region: "asia-south1",
concurrency: 60,
minInstances: 0,
maxInstances: 10,
cpu: 1.0,
};

setGlobalOptions(functionConfig);

export const beforeSignIn = beforeUserSignedIn( (event) => {
throw new HttpsError(
"failed-precondition",
"error message for the client to read",
{'usefulData': 'drink some water'} //<-- this is the data i want to access from the error object
);
});
```

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Firebase C++ Auth Windows サンプルプロジェクトから始め、min-viable-blocking.js にデプロイされている beforeUserSignedIn 関数に対するメール/パスワードサインインを再現します。Windows のエラーを Android、iOS、web について説明されている動作と比較し、必要に応じて C++ quickstarts を確認します。Windows クライアントが blocking 関数の failed-precondition エラーとその追加データにアクセスできれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cpp, javascript
領域
authentication
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。