Fixes the Android Login process

This commit is contained in:
Paul Schneider 2026-08-25 19:20:03 +01:00
commit 75b298b0f8
Signed by: notazof
GPG key ID: 1DD5D838E5343B06
16 changed files with 106 additions and 129 deletions

View file

@ -3,6 +3,7 @@ using System.Threading.Tasks;
using Android.App;
using AndroidX.Browser.CustomTabs;
using IdentityModel.OidcClient.Browser;
using PostIt.Droid.Services;
namespace PostIt.Android.Services;
@ -35,9 +36,14 @@ public sealed class AndroidSystemBrowser : IBrowser
};
}
var uri = global::Android.Net.Uri.Parse(options.StartUrl)!;
// 1. Enregistrez la tâche avant de lancer le Custom Tab
var callbackTask = OidcCallbackManager.RegisterCallback(cancellationToken);
var callbackTask = MainActivity.AndroidOidcCallbackSink.AwaitNextCallbackAsync();
// 2. LANCEZ VOTRE CUSTOM TAB ICI (via AndroidX.Browser.CustomTabs)
// ... code pour ouvrir l'URL d'authentification ...
var uri = global::Android.Net.Uri.Parse(options.StartUrl)!;
var tabsIntent = new CustomTabsIntent.Builder()
.SetShowTitle(true)!

View file

@ -0,0 +1,21 @@
using System.Threading;
using System.Threading.Tasks;
namespace PostIt.Droid.Services;
public static class OidcCallbackManager
{
private static TaskCompletionSource<string>? _tcs;
public static Task<string> RegisterCallback(CancellationToken cancellationToken)
{
_tcs = new TaskCompletionSource<string>();
cancellationToken.Register(() => _tcs.TrySetCanceled());
return _tcs.Task;
}
public static void SetResult(string url)
{
_tcs?.TrySetResult(url);
}
}