| Name | Message | Date |
|---|---|---|
| 📄 AuthService.cs | 4 days ago |
📄
src/Auth/AuthService.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using Android.Content; using Microsoft.Identity.Client; namespace NotesApp.Auth; public static class AuthService { private static readonly string[] Scopes = ["Files.ReadWrite", "User.Read"]; private static IPublicClientApplication? _pca; private static IPublicClientApplication GetOrCreatePca() { if (_pca != null) return _pca; var context = Application.Context; var clientId = context.GetString(Resource.String.msal_client_id); _pca = PublicClientApplicationBuilder .Create(clientId) .WithAuthority( AzureCloudInstance.AzurePublic, AadAuthorityAudience.PersonalMicrosoftAccount ) .WithRedirectUri($"msal{clientId}://auth") .Build(); return _pca; } public static async Task<AuthenticationResult> GetAccessTokenAsync(Activity activity) { var pca = GetOrCreatePca(); var accounts = await pca.GetAccountsAsync(); var account = accounts.FirstOrDefault(); if (account != null) { try { return await pca.AcquireTokenSilent(Scopes, account).ExecuteAsync(); } catch (MsalUiRequiredException) { // Falls through to interactive sign-in below. } } return await pca.AcquireTokenInteractive(Scopes) .WithParentActivityOrWindow(activity) .ExecuteAsync(); } public static async Task<bool> IsSignedInAsync() { var accounts = await GetOrCreatePca().GetAccountsAsync(); return accounts.Any(); } public static void HandleActivityResult(int requestCode, Result resultCode, Intent? data) => AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs( requestCode, resultCode, data ); }