After some search I found some documentations and I could solve my issue.
Here is the code:
using System;
using System.IO;
using System.Threading.Tasks;
using Google.Apis.Admin.Directory.directory_v1.Data;
using Google.Apis.Admin.Directory.directory_v1;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using ConsoleApp.Model;
namespace ConsoleApp
{
class Program
{
static void Main()
{
try
{
new Program().Run().Wait();
}
catch (AggregateException ex)
{
foreach (var e in ex.InnerExceptions)
{
Console.WriteLine("ERROR: " + e.Message);
}
}
}
DirectoryService Gservice;
private async Task Run()
{
var gSettings = JObject.Parse(File.ReadAllText(AppContext.BaseDirectory + "googleServiceAccountSettings.json"));
var credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(gSettings["client_email"].ToString())
{
ProjectId = gSettings["project_id"].ToString(),
User = gaduser,
Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser }
}.FromPrivateKey(gSettings["private_key"].ToString()));
Gservice = new DirectoryService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = "TESTNAME API"
});
var result = await InsertUserIntoGoogle(user);
result = await ExistsUserInGoogle(user.Email);
}
public static async Task<bool> InsertUserIntoGoogle(ADUser user)
{
Console.WriteLine("Creating new user in Google: {0}", user);
var usr = new User()
{
PrimaryEmail = user.Email,
Name = new UserName()
{
GivenName = user.FirstName,
FamilyName = user.LastName,
FullName = user.FirstName + " " + user.LastName,
DisplayName = user.FirstName + " " + user.LastName
},
Password = StandardPassword,
OrgUnitPath = GOU
};
var request = Gservice.Users.Insert(usr);
_ = await request.ExecuteAsync();
Console.WriteLine("User created succesfully in Google: {0}", user);
return true;
}
public async Task<bool> ExistsUserInGoogle(string userEmail)
{
try
{
var request = Gservice.Users.Get(userEmail);
var result = await request.ExecuteAsync();
return true;
}
catch (Exception e)
{
if (e.Message.Contains("HttpStatusCode is NotFound"))
return false;
else
throw;
}
}
}
}