firebase / firebase-ios-sdk

Firebase SDK for Apple App Development
https://firebase.google.com
Apache License 2.0
5.67k stars 1.49k forks source link

Sign In With Apple revokeToken returns an error occurred in Auth Emulator #11469

Open hulk510 opened 1 year ago

hulk510 commented 1 year ago

Description

Hi, there.

I wrote revoking token flow that read this guide. and I have observed revokeToken is working successfully in the real Firebase Auth (production) environment. However, when I try to use revokeToken with the emulator environment, it does not succeed and error. I have shared the code here.

スクリーンショット 2023-06-22 13 39 39

Expected Behavior

I expect the revokeToken function to succeed when used in the emulator environment. It should function in a similar manner to the real Firebase Auth (production) environment. If this behavior is not a bug and there is a specific configuration or workaround required for the emulator, I would greatly appreciate any guidance or comments you can provide.

Thank you for your attention to this matter. Please let me know if you require any additional information or clarification.

Best regards,

Reproducing the issue

  1. Sign in with Apple using the Firebase Emulator environment.
  2. Run the following code: Auth.auth().revokeToken(withAuthorizationCode: code).

Firebase SDK Version

10.9.0

Xcode Version

14.3.1(14E300c)

Installation Method

Swift Package Manager

Firebase Product(s)

Authentication

Targeted Platforms

iOS

Relevant Log Output

2023-06-23 13:51:52.070776+0900 [2212:397967] 10.9.0 - [FirebaseAuth][I-AUT000017] Has valid access token. Estimated expiration date: 2023-06-23 05:51:39 +0000, current date: 2023-06-23 04:51:52 +0000
2023-06-23 13:51:52.071260+0900 [2212:397967] 10.9.0 - [FirebaseAuth][I-AUT000017] Actual token expiration date: 2023-06-23 05:51:39 +0000, current date: 2023-06-23 04:51:52 +0000
Printing description of error:
Error Domain=FIRAuthErrorDomain Code=17004 "An internal error has occurred, print and inspect the error details for more information." UserInfo={NSLocalizedDescription=An internal error has occurred, print and inspect the error details for more information., FIRAuthErrorUserInfoNameKey=ERROR_INVALID_CREDENTIAL}
An internal error has occurred, print and inspect the error details for more information.
2023-06-23 13:52:47.453173+0900 [2212:398085] [tcp] tcp_input [C3:2] flags=[R.] seq=2523658095, ack=653370711, win=2048 state=TIME_WAIT rcv_nxt=2523658095, snd_una=653370711
2023-06-23 13:52:47.455383+0900 [2212:398085] [tcp] tcp_input [C3:2] flags=[R] seq=2523658094, ack=0, win=0 state=TIME_WAIT rcv_nxt=2523658095, snd_una=653370711
2023-06-23 13:52:47.455656+0900 [2212:398085] [tcp] tcp_input [C3:2] flags=[R] seq=2523658094, ack=0, win=0 state=TIME_WAIT rcv_nxt=2523658095, snd_una=653370711
2023-06-23 13:52:47.456832+0900 [2212:398423] 10.9.0 - [FirebaseFirestore][I-FST000001] Committing transaction: <LevelDbTransaction Backfill Indexes: 0 changes (0 bytes):>
2023-06-23 13:52:47.456935+0900 [2212:398423] 10.9.0 - [FirebaseFirestore][I-FST000001] Garbage collection skipped; Cache size 21758 is lower than threshold 104857600
2023-06-23 13:52:47.457088+0900 [2212:398423] 10.9.0 - [FirebaseFirestore][I-FST000001] Committing transaction: <LevelDbTransaction Collect garbage: 0 changes (0 bytes):>

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet
```json { "pins" : [ { "identity" : "abseil-cpp-binary", "kind" : "remoteSourceControl", "location" : "https://github.com/google/abseil-cpp-binary.git", "state" : { "revision" : "a5f16ba68913840ee5df91b8dc06f5cc063579de", "version" : "1.2021110200.0" } }, { "identity" : "firebase-ios-sdk", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk.git", "state" : { "revision" : "4961c0b7eb5d794e47a58dbfdd258b4beca4263a", "version" : "10.9.0" } }, { "identity" : "googleappmeasurement", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { "revision" : "9209b95a2593985569918e5e5ee2bf4ef8ff3640", "version" : "10.9.0" } }, { "identity" : "googledatatransport", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleDataTransport.git", "state" : { "revision" : "7874c1b48cbffd086ce8a052c4be873a78613775", "version" : "9.2.3" } }, { "identity" : "googleutilities", "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleUtilities.git", "state" : { "revision" : "871d43135925cde39ef7421d8723ce47edfdcc39", "version" : "7.11.1" } }, { "identity" : "grpc-binary", "kind" : "remoteSourceControl", "location" : "https://github.com/google/grpc-binary.git", "state" : { "revision" : "df37f6af8a273bc687e3166843ed86007de57d78", "version" : "1.44.0" } }, { "identity" : "gtm-session-fetcher", "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { "revision" : "d415594121c9e8a4f9d79cecee0965cf35e74dbd", "version" : "3.1.1" } }, { "identity" : "leveldb", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/leveldb.git", "state" : { "revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b", "version" : "1.22.2" } }, { "identity" : "nanopb", "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/nanopb.git", "state" : { "revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692", "version" : "2.30909.0" } }, { "identity" : "promises", "kind" : "remoteSourceControl", "location" : "https://github.com/google/promises.git", "state" : { "revision" : "ec957ccddbcc710ccc64c9dcbd4c7006fcf8b73a", "version" : "2.2.0" } }, { "identity" : "swift-protobuf", "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { "revision" : "0af9125c4eae12a4973fb66574c53a54962a9e1e", "version" : "1.21.0" } } ], "version" : 2 } ```

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet
```yml Replace this line with the contents of your Podfile.lock! ```
google-oss-bot commented 1 year ago

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

peterfriese commented 1 year ago

Thanks for raising this. It's a known issue (see https://github.com/firebase/firebase-ios-sdk/issues/9906#issuecomment-1528679012) - we need to implement support for this on the Emulator.

Googlers: see go/firebase-emulator-siwa-token-revocation

hulk510 commented 1 year ago

Thank you for the update. I appreciate your attention to this matter.

triage commented 1 year ago

👋 is this typical behavior for an iOS simulator as well? trying to determine if I did something wrong thank you!

peterfriese commented 1 year ago

👋

is this typical behavior for an iOS simulator as well? trying to determine if I did something wrong

thank you!

This is a bug on our end (the Firebase Emulator lacks support for SiwA token revocation), and we're working on a fix.

eQip123 commented 1 year ago

Hi, I have the same problem. Token revocation doesn't work on the simulator?

peterfriese commented 1 year ago

We're working on it - see https://github.com/firebase/firebase-tools/pull/6050

OskarGroth commented 1 year ago

Would love to see this fix merged.

lunax28 commented 8 months ago

Any update on this? Have you fixed it?