playground google .net google-api google-oauth google-email-settings-api

.net - playground - google oauth api



API de configuración de correo electrónico de Google Apps con.Net y OAuth 2.0 (2)

Para la API de configuración de correo electrónico y cualquier otra clase de GData que sea Servicios, puede usar algo como lo siguiente:

using Google.GData.Apps; using Google.GData.Apps.GoogleMailSettings; using Google.GData.Client; // Name of my cli application string applicationName = "Test-OAuth2"; // Installed (non-web) application string redirectUri = "urn:ietf:wg:oauth:2.0:oob"; // Requesting access to Contacts API and Groups Provisioning API string scopes = "https://apps-apis.google.com/a/feeds/emailsettings/2.0/"; // Stuff usually found on client_secrets.json string clientId = CLIENT_ID; string clientSecret = CLIENT_SECRET; string domain = CLIENT_DOMAIN; // Prepare OAuth parameters OAuth2Parameters parameters = new OAuth2Parameters() { ClientId = clientId, ClientSecret = clientSecret, RedirectUri = redirectUri, Scope = scopes }; // Request authorization from the user string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters); Console.WriteLine("Authorize URI: " + url); // Fetch the access code from console parameters.AccessCode = Console.ReadLine(); // Get an access token OAuthUtil.GetAccessToken(parameters); try { // Create a new request factory so it uses our OAuth credentials GOAuth2RequestFactory requestFactory = new GOAuth2RequestFactory("apps", applicationName, parameters); GoogleMailSettingsService service = new GoogleMailSettingsService(domain, applicationName); service.RequestFactory = requestFactory; // Update the signature for the user testUserName service.UpdateSignature("[email protected]", "My tiny signature"); } catch (AppsException a) { Console.WriteLine("A Google Apps error occurred."); Console.WriteLine(); Console.WriteLine("Error code: {0}", a.ErrorCode); Console.WriteLine("Invalid input: {0}", a.InvalidInput); Console.WriteLine("Reason: {0}", a.Reason); }

Puede ver un ejemplo completo en las muestras de OAuth provistas con GData aquí: https://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs

Para otras clases de GData que usan Solicitudes, el flujo es similar, pero en su lugar crea un objeto RequestSettings y lo pasa al constructor de objetos de solicitud GData como se muestra aquí: https://code.google.com/p/google-gdata/source/ browse / trunk / clients / cs / samples / oauth2_sample / oauth2demo.cs # 63

Deseo utilizar la API de configuración de correo electrónico, pero no puedo encontrar ninguna documentación sobre cómo usar esta API con la autenticación oAuth2

  1. ¿Estoy usando la API correcta?
  2. ¿Estoy usando la última API? (Google.GData.Apps.dll versión 2.2.0)
  3. ¿Cómo puedo usar este DLl con un proyecto de la consola de google con el archivo p12 y la cuenta de servicio?

Según la documentación de Google, esta es la última configuración de correo electrónico de la API: https://developers.google.com/admin-sdk/email-settings/

No puedo encontrar ninguna documentación en esta página sobre cómo usarla en .Net con Oauth, pero en el ejemplo veo esto:

using Google.GData.Apps; using Google.GData.Apps.GoogleMailSettings; GoogleMailSettingsService service = new GoogleMailSettingsService("yourdomain", "your-apps"); service.setUserCredentials("adminUsername", "adminPassword"); service.CreateSendAs("liz", "Sales", "[email protected]", "", "true");

Por lo tanto, al buscar estas referencias, encuentro esta página: https://code.google.com/p/google-gdata/ o el paquete nuget: www.nuget.org/packages/Google.GData.Apps/, la última versión es 2.2 .0

Dado que estamos cambiando a la nueva API que usa los proyectos de consola Oauth2 y la cuenta de servicio, mi pregunta es, ¿puedo usar el dll también usando la misma autenticación que para la API más nueva?

las nuevas API usan este método de autenticación:

X509Certificate2 certificate = new X509Certificate2(@"/location/P12File.p12", "notasecret", X509KeyStorageFlags.Exportable); IEnumerable<string> scopes = new[] { DirectoryService.Scope.AdminDirectoryUser, DirectoryService.Scope.AdminDirectoryUserSecurity }; ServiceAccountCredential credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer("[email protected]") { Scopes = scopes, User = "[email protected]" }.FromCertificate(certificate)); // Create the service. var service = new DirectoryService( new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "Admin directory Provisioning Sample", }); service.Users.Delete(userKey).Execute();


Tomé el ejemplo para crear el flujo de OAuth desde el directorio API https://developers.google.com/admin-sdk/directory/v1/quickstart/dotnet y lo usé para conectarme al servicio de API de configuración de correo electrónico.

static string[] Scopes = { "https://apps-apis.google.com/a/feeds/emailsettings/2.0/" }; static string ApplicationName = "your-apps"; static void Main(string[] args) { UserCredential credential; using (var stream = new FileStream("../../client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } OAuth2Parameters parameter = new OAuth2Parameters() { AccessToken = credential.Token.AccessToken }; GOAuth2RequestFactory requestFactory = new GOAuth2RequestFactory("apps", ApplicationName, parameter); GoogleMailSettingsService service = new GoogleMailSettingsService("example.com", ApplicationName); service.RequestFactory = requestFactory; service.CreateSendAs("liz", "Sales", "[email protected]", "", "true"); Console.Read(); }