¿Utiliza la API de directorio de Google para .Net?
Estoy tratando de crear mi primera aplicación de consola usando la API de directorio de Google para .Net.
Tengo un código basado en una muestra de Google. Me muestra un par de errores,uno de ellos es cuando intento crear el servicio:
var service = new DirectoryService(new BaseClientService.Initializer()
{
Authenticator = auth,
ApplicationName = "Create User",
ApiKey = "<your API Key from Google APIs console>"
});
Me muestra: "Error 3 'Google.Apis.Services.BaseClientService.Initializer' no contiene una definición para 'Authenticator'"
Y elsegundo el error está en esta función
private static IAuthorizationState GetAuthorization(NativeApplicationClient arg){}
Me muestra: "DotNetO, penAuth.OAuth2.UserAgentClient 'está definido en un ensamblado al que no se hace referencia".
En este caso escribí (usando la consola nuget): PM> Install-Package DotNetOpenAuth -Version 4.3.4.13329 .... pero no resuelve mi problema.
Este es mi código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
//using Google.Apis.Samples.Helper;
using Google.Apis.Services;
using Google.Apis.Util;
using Google.Apis.Admin.Directory.directory_v1;
using Google.Apis.Admin.Directory.directory_v1.Data;
namespace GoogleDirectoryApi_test02_consola
{
class Program
{
static void Main(string[] args)
{
String CLIENT_ID = "YOUR_CLIENT_ID";
String CLIENT_SECRET = "YOUR_CLIENT_SECRET";
// Register the authenticator and create the service
var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description, CLIENT_ID, CLIENT_SECRET);
var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
//New User
User newuserbody = new User();
string userId = "SampleId01";
UserName newusername = new UserName();
newuserbody.PrimaryEmail = userId;
// Create the service.
var service = new DirectoryService(new BaseClientService.Initializer()
{
Authenticator = auth,
ApplicationName = "Create User",
ApiKey = "<your API Key from Google APIs console>"
});
User results = service.Users.Insert(newuserbody).Execute();
}
private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
{
// Get the auth URL:
//IAuthorizationState state = new AuthorizationState(new[] { DirectoryService.Scopes.AdminDirectoryUser.GetStringValue() });
IAuthorizationState state = new AuthorizationState(new[] { DirectoryService.Scope.AdminDirectoryUser.ToString() });
state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
Uri authUri = arg.RequestUserAuthorization(state);
// Request authorization from the user (by opening a browser window):
Process.Start(authUri.ToString());
Console.WriteLine();
Console.Write("Authorization Code: ");
string authCode = Console.ReadLine();
// Retrieve the access token by using the authorization code:
return arg.ProcessUserAuthorization(authCode, state);
}
}
}
Gracias de antemano por tu ayuda