[Bug]Firebase.FirebaseException: A headful operation is already in progress. Please wait for that to finish
See original GitHub issue[REQUIRED] Please fill in the following fields:
- Unity editor version: 2020.2.7f1
- Firebase Unity SDK version: 8.7.0
- Source you installed the SDK: unitypackage (.unitypackage or Unity Package Manager)
- Problematic Firebase Component: Auth (Auth, Database, etc.)
- Other Firebase Components in use: _____ (Auth, Database, etc.)
- Additional SDKs you are using: _____ (Facebook, AdMob, etc.)
- Platform you are using the Unity editor on: Windows (Mac, Windows, or Linux)
- Platform you are targeting: Android (iOS, Android, and/or desktop)
- Scripting Runtime: IL2CPP (Mono, and/or IL2CPP)
[REQUIRED] Please describe the issue here:
I use this example to log in apple id on Android.
Firebase.Auth.FederatedOAuthProviderData providerData =new Firebase.Auth.FederatedOAuthProviderData(); providerData.ProviderId = “apple.com”; providerData.Scopes = new List<string>(); providerData.Scopes.Add(“email”); providerData.Scopes.Add(“name”); Firebase.Auth.FederatedOAuthProvider provider = new Firebase.Auth.FederatedOAuthProvider(); provider.SetProviderData(providerData); auth.SignInWithProviderAsync(provider).ContinueOnMainThread(task => { if (task.IsCanceled) { Debug.LogError(“SignInWithProviderAsync was canceled.”); return; } if (task.IsFaulted) { Debug.LogError("SignInWithProviderAsync encountered an error: " + task.Exception); return; }
Firebase.Auth.SignInResult signInResult = task.Result;
Firebase.Auth.FirebaseUser user = signInResult.User;
Debug.LogFormat("User signed in successfully: {0} ({1})",
user.DisplayName, user.UserId);
});
Everything works fine on Android. But when I pull up the authorization page and click the home button, I go back to my game from the desktop.Then when I call SignInWithProviderAsync again in the same way, I get an error :
SignInWithProviderAsync encountered an error: System.AggregateException: One or more errors occurred. —> System.AggregateException: One or more errors occurred. —> Firebase.FirebaseException: A headful operation is already in progress. Please wait for that to finish.
— End of inner exception stack trace —
— End of inner exception stack trace —
—> (Inner Exception #0) System.AggregateException: One or more errors occurred. —> Firebase.FirebaseException: A headful operation is already in progress. Please wait for that to finish.
— End of inner exception stack trace —
—> (Inner Exception #0) Firebase.FirebaseException: A headful operation is already in progress. Please wait for that to finish.<—
<—
UnityEngine.Logger:Log(LogType, Object)
MobileLoginService:<FirebaseAppleLogin>b__13_0(Task1) System.Action
1:Invoke(T)
Firebase.Extensions.<ContinueWithOnMainThread>c__AnonStorey9:<>m__0()
System.Func1:Invoke() Firebase.<RunAsync>c__AnonStorey1
1:<>m__0()
System.Action:Invoke()
(Please list the full steps to reproduce the issue. Include device logs, Unity logs, and stack traces if available.)
Steps to reproduce:
Have you been able to reproduce this issue with just the Firebase Unity quickstarts (this GitHub project)? Yes. What’s the issue repro rate? (eg 100%, 1/5 etc) 100%
What happened? How can we make the problem occur? This could be a description, log/console output, etc.
-
Download and configure this github project to make it run
-
Modify the SignInWithProvider function: protected void SignInWithProvider(string providerId) { var providerData = new Firebase.Auth.FederatedOAuthProviderData(); providerData.ProviderId = “apple.com”; providerData.Scopes = new List<string>() { “name”, “email” };
var provider = new Firebase.Auth.FederatedOAuthProvider(); provider.SetProviderData(providerData); auth.SignInWithProviderAsync(provider).ContinueWithOnMainThread(signin_task => { if (LogTaskCompletion(signin_task, "SignInWithProvider")) { DebugLog("SignInWithProviderTask Completed:" + signin_task.IsCompleted); } if(signin_task.Exception != null) { DebugLog("SignInWithProviderTask - Exception: " + signin_task.Exception.Message); return; } DisplaySignInResult(signin_task.Result, 1);
}); }
-
Click SignInWith | Miscrosoft, open the browser and click the home button to return to the Android desktop, click app to return to the application, and click SignInWith | Miscrosoft again.
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:
// TODO(you): code here to reproduce the problem
Issue Analytics
- State:
- Created a year ago
- Comments:9
Top GitHub Comments
Thanks for this, @liuchong-94. I was able to replicate the behavior, and I can see how this is a bug. If a user accidentally tapped home while they’re in the middle of signing up with the Apple window, they’ll return to their app with the Apple window gone, and the app still thinks that the authentication process is ongoing even though the user can’t proceed on their end.
That being said, I’ve relayed my findings to the team. You may refer to this thread for updates. I’ll be marking this as a bug for now
I guess this problem can be solved as long as the rollback function is prohibited in the middle process, But the process belongs to Firebase, and we can’t modify it