async Task RunAsync(INetUtility netUtil, ILoggerFactory loggerFactory) { try { var credential = InstalledAppCredential.ReadFromFile("Path of your json file downloaded from your Google API Console"); var oauth2Util = new OAuth2Utility(netUtil); var tokenInfo = await oauth2Util.GetTokenInfoAsync(credential, "refreshToken"); // assume you have already obtained your refresh token var adWordsApiConfig = new AdWordsApiConfig(); adWordsApiConfig.AccessToken = tokenInfo.AccessToken; adWordsApiConfig.ClientCustomerId = "Your client customer ID"; adWordsApiConfig.DeveloperToken = "Developer token"; adWordsApiConfig.UserAgent = "Testing example"; // this and the rest of the properties are optional // An example of using some AdWords service ICampaignService campaignService = new CampaignService(adWordsApiConfig, netUtil, loggerFactory); // loggerFactory can be null var selector = new Selector <CampaignServiceField>() .AddFields(CampaignServiceField.Id, CampaignServiceField.Name) .AddPredicate(CampaignServiceField.Status, PredicateOperator.Equals, CampaignStatus.Enabled.ToXmlValue()); var campaignPage = await campaignService.GetAsync(selector); // An example of getting AdWords report IReportUtility reportUtil = new ReportUtility(adWordsApiConfig, netUtil, loggerFactory); // loggerFactory can be null var rptDef = new ReportDefinition(); rptDef.DateRangeType = ReportDefinitionDateRangeType.AllTime; rptDef.DownloadFormat = DownloadFormat.GzippedCsv; rptDef.ReportName = "Testing Report"; rptDef.ReportType = ReportDefinitionReportType.CampaignPerformanceReport; rptDef.Selector = new Selector { Fields = new List <string>() }; rptDef.Selector.Fields.AddRange(new string[] { "CampaignId", "CampaignName", "Impressions" }); var reportCsv = await reportUtil.GetContentStringAsync(rptDef); } catch (Exception ex) { _logger.LogError("{0}: {1}{2}{3}", ex.GetType().Name, ex.Message, Environment.NewLine, ex.StackTrace); } }
public async Task TestGetTokenInfoAsync_ByRefreshToken_Passed() { var credential = new TestCredential(); string refreshToken = "refreshToken"; var net = new DummyNetUtility(); var response = new DummyHttpWebResponse(HttpStatusCode.OK, @"{ ""access_token"": ""accessToken"", ""expires_in"": 123 }"); net.AddResponse(response); var oauth2 = new OAuth2Utility(net); DateTime timeBefore = DateTime.UtcNow; var tokenInfo = await oauth2.GetTokenInfoAsync(credential, refreshToken); DateTime timeAfter = DateTime.UtcNow; Assert.Equal("accessToken", tokenInfo.AccessToken); Assert.Equal(123, tokenInfo.ExpiresIn); Assert.True(timeBefore <= tokenInfo.IssuedTime && tokenInfo.IssuedTime <= timeAfter, $"Expect {timeBefore} <= Issued Time {tokenInfo.IssuedTime} <= {timeAfter}"); }
private void ObtainValidAccessToken(TestConfig testConfig) { lock (_lock) { if (!IsAccessTokenExpired(testConfig)) { return; } var oauth2Util = new OAuth2Utility(GetNetUtility()); string fullPath = testConfig.GetFilePath(testConfig.Oauth2.CredentialJsonPath); OAuth2Credential credential = InstalledAppCredential.ReadFromFile(fullPath); if (credential.ProjectId == null) { credential = WebAppCredential.ReadFromFile(fullPath); } var tokenInfo = oauth2Util.GetTokenInfoAsync(credential, testConfig.Oauth2.RefreshToken).Result; testConfig.Oauth2.AccessToken = tokenInfo.AccessToken; testConfig.Oauth2.ExpiresIn = tokenInfo.ExpiresIn; testConfig.Oauth2.IssuedTime = tokenInfo.IssuedTime.ToUniversalTime().ToString("s", System.Globalization.CultureInfo.InvariantCulture) + "Z"; testConfig.Save(); } }