From ac80985f76542eed2eabca3d68d2cfc7c47101c8 Mon Sep 17 00:00:00 2001 From: Pinaki Ghatak Date: Mon, 31 Mar 2025 15:06:05 +0200 Subject: [PATCH] Solved authenticate using device login --- src/ADOGenerator/ADOGenerator.csproj | 10 ++++----- src/ADOGenerator/ServiceExtensions.cs | 14 ++++++++++--- src/ADOGenerator/Services/AuthService.cs | 26 ++++++++++++++++++++---- src/ADOGenerator/appsettings.json | 6 +++--- src/API/API.csproj | 2 +- 5 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/ADOGenerator/ADOGenerator.csproj b/src/ADOGenerator/ADOGenerator.csproj index 34dac0a..6617d91 100644 --- a/src/ADOGenerator/ADOGenerator.csproj +++ b/src/ADOGenerator/ADOGenerator.csproj @@ -63,17 +63,17 @@ - + - - - + + + - + diff --git a/src/ADOGenerator/ServiceExtensions.cs b/src/ADOGenerator/ServiceExtensions.cs index 3400cc0..cb1b5e3 100644 --- a/src/ADOGenerator/ServiceExtensions.cs +++ b/src/ADOGenerator/ServiceExtensions.cs @@ -40,12 +40,20 @@ public static void AddMessage(this string id, string message) string fileName = $"{DateTime.Now.ToString("yyyy-MM-dd")}-{id}.txt"; if (id.EndsWith("_Errors")) { + // Create the Errors folder if it does not exist + string errorsFolderPath = Path.Combine(logFilePath, "Errors"); + if (!Directory.Exists(errorsFolderPath)) + { + Directory.CreateDirectory(errorsFolderPath); + } // Create Log file - if (!File.Exists(Path.Combine(logFilePath, "Errors", fileName))) + string errorFilePath = Path.Combine(errorsFolderPath, fileName); + if (!File.Exists(errorFilePath)) { - File.Create(Path.Combine(logFilePath, "Errors", fileName)).Dispose(); + File.Create(errorFilePath).Dispose(); } - File.AppendAllLines(Path.Combine(logFilePath, "Errors", fileName), new string[] { message }); + File.AppendAllLines(errorFilePath, new string[] { message }); + Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(message); Console.ResetColor(); diff --git a/src/ADOGenerator/Services/AuthService.cs b/src/ADOGenerator/Services/AuthService.cs index bccf493..2291143 100644 --- a/src/ADOGenerator/Services/AuthService.cs +++ b/src/ADOGenerator/Services/AuthService.cs @@ -34,12 +34,30 @@ static AuthService() public async Task AcquireTokenAsync(IPublicClientApplication app) { + AuthenticationResult result = null; + try + { + result = await app.AcquireTokenWithDeviceCode(scopes, deviceCodeCallback => + { + Console.WriteLine(deviceCodeCallback.Message); + return Task.CompletedTask; + }).ExecuteAsync(); + } + catch (MsalServiceException ex) + { + Console.WriteLine($"MSALServiceException Error: {ex.Message} \nError Code: {ex.ErrorCode}"); - return await app.AcquireTokenWithDeviceCode(scopes, deviceCodeCallback => + } + catch (OperationCanceledException ex) { - Console.WriteLine(deviceCodeCallback.Message); - return Task.CompletedTask; - }).ExecuteAsync(); + Console.WriteLine($"OperationCanceledException Error: {ex.Message}"); + } + catch (MsalClientException ex) + { + Console.WriteLine($"MSALClientException Error: {ex.Message} \nError Code: {ex.ErrorCode}"); + } + + return result; // Ensure a return value in case of an exception } public async Task GetProfileInfoAsync(string accessToken) diff --git a/src/ADOGenerator/appsettings.json b/src/ADOGenerator/appsettings.json index ec5d773..cf8c05a 100644 --- a/src/ADOGenerator/appsettings.json +++ b/src/ADOGenerator/appsettings.json @@ -32,9 +32,9 @@ "GraphApiVersion": "4.1-preview.1", "VariableGroupsApiVersion": "5.0-preview.1", "AnalyticsKey": "", - "clientId": "", - "tenantId": "", - "scopes": "" + "clientId": "1e5741a9-65b0-41ee-aa63-bd885846e612", + "tenantId": "4dc36e62-3c28-4030-9bb2-3b85837b552e", + "scopes": "499b84ac-1321-427f-aa17-267ca6975798/.default" }, "Logging": { "LogLevel": { diff --git a/src/API/API.csproj b/src/API/API.csproj index d1a1faa..d2210b9 100644 --- a/src/API/API.csproj +++ b/src/API/API.csproj @@ -15,7 +15,7 @@ - +