.NET MAUI中WebAuthenticator集成Firebase认证遇初始状态缺失错误
解决方案
1. 禁用临时浏览器会话
错误提示指向sessionStorage不可访问,你代码里开启的PrefersEphemeralWebBrowserSession=true会创建无状态临时浏览器会话,Firebase认证依赖sessionStorage保存登录流程的state参数,必须关闭该设置:
await client.SignInWithRedirectAsync(FirebaseProviderType.Google, async uri => { var options = new WebAuthenticatorOptions { Url = new Uri(uri), CallbackUrl = new Uri("com.companyname.myappname://callback/"), PrefersEphemeralWebBrowserSession = false // 改为false或直接删除该行 }; var res = await WebAuthenticator.Default.AuthenticateAsync(options); // 关键:将WebAuthenticator返回的回调URI传递给Firebase,完成认证流程收尾 await client.GetRedirectResultAsync(res.ResultUrl); });
2. 配置Firebase控制台的授权重定向URI
进入Firebase控制台操作:
- 打开目标项目 → 认证 → 登录方法
- 选择Google/Facebook等对应登录提供商
- 在「授权重定向URI」列表中添加你的回调URL:
com.companyname.myappname://callback/ - 保存更改
3. 确保平台端回调URL配置正确
Android
在Platforms/Android/AndroidManifest.xml中添加intent-filter,让系统识别你的回调URL:
<activity android:name="microsoft.maui.authentication.WebAuthenticatorCallbackActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 替换为你的回调URL scheme --> <data android:scheme="com.companyname.myappname" /> </intent-filter> </activity>
iOS/Mac Catalyst
在Platforms/iOS/Info.plist和Platforms/MacCatalyst/Info.plist中添加URL scheme:
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <!-- 替换为你的回调URL scheme --> <string>com.companyname.myappname</string> </array> </dict> </array>
4. 验证回调URL一致性
确保以下三处的回调URL完全匹配:
- 代码中
WebAuthenticatorOptions.CallbackUrl的值 - Firebase控制台配置的授权重定向URI
- 各平台配置文件中的URL scheme
内容的提问来源于stack exchange,提问作者primix
相关产品推荐
相关产品推荐

