-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🐛 [firebase_auth] FirebaseAuth.instance.currentUser initially null for the first few seconds initializing firebase on windows #12055
Comments
Hi @Justus-M, is this limited to only windows or do you experience it on other platforms as well? Can you share the code sample you use as well? |
I haven't had time to create a minimum reproducible example but I imagine you can just use the example app and print FirebaseAuth.instance.currentUser immediately after initializing firebase. I have added a delay of a few seconds and then it is no longer null, so to be honest this is no longer a priority for me. I believe it's an issue with the library so I wanted to bring it to your attention since flutterfire is still in the early stages for windows and has various issues. But the code is literally just
This prints null on windows after initializing firebase, even if the user was logged in before closing the app. On mac, web, and mobile it does not return null |
Hey @Justus-M. We need more information to resolve this issue but there hasn't been an update in 7 weekdays. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically. If you have more information that will help us get to the bottom of this, just add a comment! |
I provided more information |
Sorry for the delay, it seems like the bot didn't remove the blocked label so I missed it in my notifications. Reproducible using the plugin example app. I was already logged in, but the user came as null before the data was fully loaded. cc @Lyokone
|
Thanks for the report, I'm looking into it |
This happened on other platforms as well, tested on android |
@Lyokone Is it possible that this also has an impact on the authentication for Firestore requests shortly after creating a new account? I have the following issue: after creating an account with createUserWithEmailAndPassword on windows, I try to add a document to Firestore but the Firestore security rules reject the operation. It seems that even though FirebaseAuth.instance.currentUser is not null, firestore security rules don't recognize the user as being authenticated (the security rules check that the user is authenticated, and that the users id matches the document ID). When I restart the app after creating the user (or log in with an existing user in the first place), it works fine. Unfortunately I haven't been able to create a minimum reproducible example (for some reason I can't reproduce it in the test app), so I figured I'd ask you since you worked on a potentially related issue. |
I am seeing this issue too on Windows. After I sign in/anonymous sign in, hot restarting the app returns currentUser as null. This also happens on subsequent app runs too. In my case, it is always null, even after few seconds. I tried this: FirebaseAuth.instance.authStateChanges().listen((event) {
print('Auth state changed: $event');
}); and it only prints null and never prints again. |
someone solved the problem ? |
did you find solution ? |
I haven't. This makes our app useless on Windows! 🥲 |
u can make delay its work but still bad ! |
I can't. Its not that it is only null for the first few seconds...it stays null. So it always logs out users when reopened. |
try this : void main() async { await Future.delayed((const Duration(seconds: 2))).then((value) { |
Are there any updates on this? I'm experiencing this too. |
No updates as far as I'm aware, except that I lost several customers because of it |
Yeah same here. I'm trying to find a solution at the moment. I'll post it here once I find it. |
@Justus-M do you use a YouTube scope by any chance for authentication? |
No, I had users encountering this issue with a normal email and password
login
…On Thu 8. Aug 2024 at 16:43, Remco van Akker ***@***.***> wrote:
@Justus-M <https://github.com/Justus-M> do you use a YouTube scope by any
chance for authentication?
—
Reply to this email directly, view it on GitHub
<#12055 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AI2UQLB5IIHR5BTRT5Q45LTZQN72LAVCNFSM6AAAAABA22MTZWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZWGAYDONZSGI>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Okay. I think I found a solution. It's the way you handle authentication. My current implementation that works now, looks like this: Before I did it like this: I hope this solves the issue for you too!
|
I was never adding a listener in the first place, your issue probably
wasn’t network related like everyone else in this thread from the sounds of
it
On Thu 8. Aug 2024 at 18:03, Remco van Akker ***@***.***>
wrote:
… Okay. I think I found a solution. It's the way you handle authentication.
My current implementation that works now, looks like this:
await
FirebaseAuth.instance.signInWithCredential(credential).whenComplete(()
async { final user = FirebaseAuth.instance.currentUser; // do something
with user });
Before I did it like this:
FirebaseAuth.instance.signInWithCredential(credential);
FirebaseAuth.instance.authStateChanges().listen((User? user) async { // do
something with the user object }
I hope this solves the issue for you too!
No, I had users encountering this issue with a normal email and password
login
… <#m_5950327318018341650_>
On Thu 8. Aug 2024 at 16:43, Remco van Akker *@*.*> wrote: @Justus-M
<https://github.com/Justus-M> https://github.com/Justus-M
<https://github.com/Justus-M> do you use a YouTube scope by any chance for
authentication? — Reply to this email directly, view it on GitHub <#12055
(comment)
<#12055 (comment)>>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AI2UQLB5IIHR5BTRT5Q45LTZQN72LAVCNFSM6AAAAABA22MTZWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZWGAYDONZSGI
<https://github.com/notifications/unsubscribe-auth/AI2UQLB5IIHR5BTRT5Q45LTZQN72LAVCNFSM6AAAAABA22MTZWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZWGAYDONZSGI>
. You are receiving this because you were mentioned.Message ID: @.*>
—
Reply to this email directly, view it on GitHub
<#12055 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AI2UQLHZJZ7XYWGRBS7YWWLZQOJF7AVCNFSM6AAAAABA22MTZWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZWGE3TOOJXHE>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
This issue makes Firebase useless because Windows app is un-usable. Can someone please look into this? @Lyokone |
having same issue |
How do you handle the authentication then? I'm saying that I'm not experiencing this issue anymore.
|
I'm having this error too, seems related to the channel error as it looks relevant to the auth-state [ERROR:flutter/shell/common/shell.cc(1015)] The 'firebase_auth_plugin/auth-state/[DEFAULT]' channel sent a message from native to Flutter on a non-platform thread. Platform channel messages must be sent on the platform thread. Failure to do so may result in data loss or crashes, and must be fixed in the plugin or application code creating that channel. flutter 3.24.3 |
I faced a similar issue where Solution I utilized the FirebaseAuthService Class class FirebaseAuthService{
static bool isLoggedIn = false;
static void authStateChanges() {
FirebaseAuth.instance.authStateChanges().listen((event) {
if (event != null) {
isLoggedIn = true;
} else {
isLoggedIn = false;
}
});
}
} Main File void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
FirebaseAuthService.authStateChanges();
runApp(const FruitHub());
} Example: Checking Login Status in the Splash Screen From any file, you can check if the user is logged in. For example, in the splash screen: var isLoggedIn = FirebaseAuthService.isLoggedIn;
if (isLoggedIn) {
Navigator.pushReplacementNamed(context, MainView.routeName);
} else {
Navigator.pushReplacementNamed(context, SignInView.routeName);
} This approach ensures that your app correctly detects the user's authentication state as soon as it's available and navigates appropriately. I hope this helps! |
@Lyokone Any updates on this? |
Bug report
Describe the bug
FirebaseAuth.instance.currentUser is always null when initializing firebase on windows, even if the user is logged in. It then changes to a non-null value within a few seconds.
Steps to reproduce
Steps to reproduce the behavior:
Expected behavior
I expect the logged in user object to be shown on initialization, otherwise I have to add a delay (not sure how long it needs to be) or I don't know whether to show the login page or not. On mac and web, currentUser is immediately loaded on initialization.
Flutter doctor
Run
flutter doctor
and paste the output below:Click To Expand
The text was updated successfully, but these errors were encountered: