Fixes the Android Login process
This commit is contained in:
parent
dd5904f0a7
commit
75b298b0f8
16 changed files with 106 additions and 129 deletions
|
|
@ -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)!
|
||||
|
|
|
|||
21
src/PostIt/PostIt.Android/Services/OidcCallbackManager.cs
Normal file
21
src/PostIt/PostIt.Android/Services/OidcCallbackManager.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue