2016-07-08 85 views
0

我想知道如何創建Google BaseClientService.Initializer的實例。我需要使用BaseClientService.Initializer創建GmailService實例,然後使用此實例創建UsersResource實例。如何創建Google BaseClientService.Initializer的實例

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; 

回答

0

首先去下面的鏈接,並在您的谷歌帳戶中打開一個應用程序。 一旦你運行了代碼,你會第一次得到例外,給你一個地址去,並啓用你的谷歌帳戶的API。

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("=", ""); 
      }