@@ -197,6 +197,7 @@ private void CreateWebView()
197197
198198 // Register JavaScript methods
199199 webView . RegisterJavaScriptMethod ( "HandleLoginData" , HandleLoginData ) ;
200+ webView . RegisterJavaScriptMethod ( "HandleLoginError" , HandleLoginError ) ;
200201
201202 isInitialized = true ;
202203 PassportLogger . Info ( $ "{ TAG } Cross-platform WebView created successfully") ;
@@ -369,6 +370,44 @@ private async void HandleLoginData(string jsonData)
369370 }
370371 }
371372
373+ /// <summary>
374+ /// Handles error messages received from JavaScript
375+ /// Called when the login page encounters an error and sends error information
376+ /// </summary>
377+ /// <param name="jsonData">JSON string containing error data</param>
378+ private void HandleLoginError ( string jsonData )
379+ {
380+ try
381+ {
382+ PassportLogger . Info ( $ "{ TAG } Received error data from JavaScript: { jsonData } ") ;
383+
384+ // Parse the JSON error data
385+ ErrorData errorData = JsonUtility . FromJson < ErrorData > ( jsonData ) ;
386+ PassportLogger . Error ( $ "{ TAG } Login page error: { errorData } ") ;
387+
388+ // Create user-friendly error message
389+ string errorMessage = ! string . IsNullOrEmpty ( errorData . message )
390+ ? $ "Login failed: { errorData . message } "
391+ : "Login failed due to an unknown error" ;
392+
393+ // Trigger failure events
394+ OnLoginFailure ? . Invoke ( errorMessage ) ;
395+ OnLoginFailureStatic ? . Invoke ( errorMessage ) ;
396+
397+ // Hide the WebView after error
398+ HideLoginUI ( ) ;
399+ }
400+ catch ( Exception ex )
401+ {
402+ string errorMessage = $ "Failed to handle error message from JavaScript: { ex . Message } ";
403+ PassportLogger . Error ( $ "{ TAG } { errorMessage } ") ;
404+
405+ // Trigger failure events even if we can't parse the error
406+ OnLoginFailure ? . Invoke ( "Login failed due to an error processing error message" ) ;
407+ OnLoginFailureStatic ? . Invoke ( "Login failed due to an error processing error message" ) ;
408+ }
409+ }
410+
372411 private void SetupLoginButton ( )
373412 {
374413 if ( loginButton != null )
0 commit comments