Yan
Yan

Reputation: 1

How To create an instance of Google BaseClientService.Initializer

I want to know how to create an instance of Google BaseClientService.Initializer. I need to use the BaseClientService.Initializer to create the GmailService instance, and then use this GmailService instance to create an UsersResource instance.

Google.Apis.Services.BaseClientService.Initializer initializer = new BaseClientService.Initializer();
initializer.ApiKey = "MyApiKey";
initializer.ApplicationName = "MyProject";
initializer.DefaultExponentialBackOffPolicy = Google.Apis.Http.ExponentialBackOffPolicy.None;
Google.Apis.Gmail.v1.GmailService gmailService = new GmailService(initializer);      
Google.Apis.Gmail.v1.UsersResource usersResource = new UsersResource(gmailService);
UsersResource.MessagesResource messagesResource = usersResource.Messages;

Upvotes: 0

Views: 3479

Answers (1)

Guy Assaf
Guy Assaf

Reputation: 971

First go to the link bellow and open an application in your google account. once you run the code you'll get exception for the first time, given you an address to go and enable the API in your google account.

https://console.developers.google.com/apis/dashboard?project=super-pharm-log-notifications

      static string[] Scopes = { GmailService.Scope.GmailCompose, GmailService.Scope.GmailSend, GmailService.Scope.GmailInsert };

            static private BaseClientService.Initializer initializeGmailAccountServices()
            {
                string appRoot = null;


                    if (System.Web.HttpContext.Current == null)
                    {
                        appRoot = Environment.CurrentDirectory;
                    }
                    else
                    {
                        appRoot = System.Web.HttpContext.Current.Server.MapPath(@"~\");
                    }
                    string path = Path.Combine(appRoot, DBConstants.GMAIL_CREDENTIALS_PATH);


                    UserCredential credential;

                    using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
                    {
                        ClientSecrets secrets = GoogleClientSecrets.Load(stream).Secrets;

                        var t =  GoogleWebAuthorizationBroker.AuthorizeAsync(secrets, Scopes, "user", CancellationToken.None);

                        t.Wait();
                        credential = t.Result;
                    }

                    return= new BaseClientService.Initializer()
                    {
                        HttpClientInitializer = credential,
                        ApplicationName = "your application name",
                    };
            }

private static string Base64UrlEncode(string input)
            {
                var inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
                // Special "url-safe" base64 encode.
                return Convert.ToBase64String(inputBytes)
                  .Replace('+', '-')
                  .Replace('/', '_')
                  .Replace("=", "");
            }

Upvotes: 1

Related Questions