Following the code outlined here:
https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console/blob/master/GraphConsoleAppV3/Program.cs#L810
but using a Service Principal to authenticate one will get a Insufficient Privileges error when trying to create the application on
client.Applications.AddApplicationAsync(appObject).Wait();
with token exchange like the following:
var context = new AuthenticationContext($"https://login.microsoftonline.com/{tenantId}");
var token = context.AcquireToken("https://graph.windows.net", new ClientCredential(clientId, secret));
var client = new ActiveDirectoryClient(new Uri($"https://graph.windows.net/{tenantId}"),()=>Task.FromResult(token.AccessToken));