/// <summary> /// Utility method for setting the customer and account identifiers within the global /// <see cref="_authorizationData"/> instance. /// </summary> /// <param name="authentication">The OAuth authentication credentials.</param> /// <returns></returns> private static async Task SetAuthorizationDataAsync(Authentication authentication) { _authorizationData = new AuthorizationData { Authentication = authentication, DeveloperToken = Settings.Default["DeveloperToken"].ToString() }; ApiEnvironment environment = ((OAuthDesktopMobileAuthCodeGrant)_authorizationData.Authentication).Environment; BingAdsExamplesLibrary.V12.CustomerManagementExampleHelper CustomerManagementExampleHelper = new BingAdsExamplesLibrary.V12.CustomerManagementExampleHelper(null); CustomerManagementExampleHelper.CustomerManagementService = new ServiceClient <ICustomerManagementService>(_authorizationData, environment); var getUserResponse = await CustomerManagementExampleHelper.GetUserAsync(null, true); var user = getUserResponse.User; var predicate = new Predicate { Field = "UserId", Operator = PredicateOperator.Equals, Value = user.Id.ToString() }; var paging = new Paging { Index = 0, Size = 10 }; var request = new SearchAccountsRequest { Ordering = null, PageInfo = paging, Predicates = new[] { predicate } }; var accounts = (await CustomerManagementExampleHelper.SearchAccountsAsync( new[] { predicate }, null, paging)).Accounts.ToArray(); if (accounts.Length <= 0) { return; } _authorizationData.AccountId = (long)accounts[0].Id; _authorizationData.CustomerId = (int)accounts[0].ParentCustomerId; return; }
/// <summary> /// Utility method for setting the customer and account identifiers within the global /// <see cref="_authorizationData"/> instance. /// </summary> /// <param name="authentication">The OAuth authentication credentials.</param> /// <returns></returns> private async Task <IList <AdvertiserAccount> > SetAuthorizationDataAsync(Microsoft.BingAds.Authentication authentication, string developerToken) { _authorizationData = new AuthorizationData { Authentication = authentication, DeveloperToken = developerToken }; _customerManagementService = new ServiceClient <ICustomerManagementService>(_authorizationData); var getUserRequest = new GetUserRequest { UserId = null }; var getUserResponse = (await _customerManagementService.CallAsync((s, r) => s.GetUserAsync(r), getUserRequest)); var user = getUserResponse.User; var predicate = new Predicate { Field = "UserId", Operator = PredicateOperator.Equals, Value = user.Id.ToString() }; var paging = new Paging { Index = 0, Size = 10 }; var searchAccountsRequest = new SearchAccountsRequest { Ordering = null, PageInfo = paging, Predicates = new[] { predicate } }; var searchAccountsResponse = (await _customerManagementService.CallAsync((s, r) => s.SearchAccountsAsync(r), searchAccountsRequest)); var accounts = searchAccountsResponse.Accounts.ToArray(); //if (accounts.Length <= 0) return; _authorizationData.AccountId = (long)accounts[0].Id; _authorizationData.CustomerId = (int)accounts[0].ParentCustomerId; //OutputArrayOfAdvertiserAccount(accounts); return(accounts); }
public async Task <SearchAccountsResponse> SearchAccountsAsync( IList <Predicate> predicates, IList <OrderBy> ordering, Paging pageInfo) { var request = new SearchAccountsRequest { Predicates = predicates, Ordering = ordering, PageInfo = pageInfo }; return(await CustomerManagementService.CallAsync((s, r) => s.SearchAccountsAsync(r), request)); }
private async Task <Account[]> SearchAccountsByAccountIdAsync(long?accountId) { var predicate = new Predicate { Field = "AccountId", Operator = PredicateOperator.Equals, Value = accountId.ToString() }; var paging = new Paging { Index = 0, Size = 10 }; var request = new SearchAccountsRequest { Ordering = null, PageInfo = paging, Predicates = new[] { predicate } }; return((await CustomerService.CallAsync((s, r) => s.SearchAccountsAsync(r), request)).Accounts.ToArray()); }
/// <summary> /// Search for account details by UserId. /// </summary> /// <param name="userId">The Bing Ads user identifier.</param> /// <returns>List of accounts that the user can manage.</returns> private async Task <Account[]> SearchAccountsByUserIdAsync(long?userId) { var predicate = new Predicate { Field = "UserId", Operator = PredicateOperator.Equals, Value = userId.ToString() }; var paging = new Microsoft.BingAds.V11.CustomerManagement.Paging { Index = 0, Size = 10 }; var request = new SearchAccountsRequest { Ordering = null, PageInfo = paging, Predicates = new[] { predicate } }; return((await _customerService.CallAsync((s, r) => s.SearchAccountsAsync(r), request)).Accounts.ToArray()); }
/// <summary> /// Utility method for setting the customer and account identifiers within the global /// <see cref="_authorizationData"/> instance. /// </summary> /// <param name="authentication">The OAuth authentication credentials.</param> /// <returns></returns> private static async Task SetAuthorizationDataAsync(Authentication authentication) { _authorizationData = new AuthorizationData { Authentication = authentication, DeveloperToken = Settings.Default["DeveloperToken"].ToString() }; ApiEnvironment environment = ((OAuthDesktopMobileAuthCodeGrant)_authorizationData.Authentication).Environment; BingAdsExamplesLibrary.V13.CustomerManagementExampleHelper CustomerManagementExampleHelper = new BingAdsExamplesLibrary.V13.CustomerManagementExampleHelper( OutputStatusMessageDefault: null); CustomerManagementExampleHelper.CustomerManagementService = new ServiceClient <ICustomerManagementService>( authorizationData: _authorizationData, environment: environment); var getUserResponse = await CustomerManagementExampleHelper.GetUserAsync( userId : null); var user = getUserResponse.User; // Search for the accounts that the user can access. // To retrieve more than 100 accounts, increase the page size up to 1,000. // To retrieve more than 1,000 accounts you'll need to add paging. var predicate = new Predicate { Field = "UserId", Operator = PredicateOperator.Equals, Value = user.Id.ToString() }; var paging = new Paging { Index = 0, Size = 100 }; var request = new SearchAccountsRequest { Ordering = null, PageInfo = paging, Predicates = new[] { predicate } }; var accounts = (await CustomerManagementExampleHelper.SearchAccountsAsync( predicates: new[] { predicate }, ordering: null, pageInfo: paging))?.Accounts.ToArray(); if (accounts.Length <= 0) { return; } _authorizationData.AccountId = (long)accounts[0].Id; _authorizationData.CustomerId = (int)accounts[0].ParentCustomerId; return; }
/// <summary> /// Searches by UserId for accounts that the user can manage. /// </summary> /// <param name="userId">The Bing Ads user identifier.</param> /// <returns>List of accounts that the user can manage.</returns> private static async Task<Account[]> SearchAccountsByUserIdAsync(long? userId) { var predicate = new Predicate { Field = "UserId", Operator = PredicateOperator.Equals, Value = userId.ToString() }; var paging = new Paging { Index = 0, Size = 10 }; var request = new SearchAccountsRequest { Ordering = null, PageInfo = paging, Predicates = new[] { predicate } }; return (await _customerService.CallAsync((s, r) => s.SearchAccountsAsync(r), request)).Accounts.ToArray(); }
public async override Task RunAsync(AuthorizationData authorizationData) { try { ApiEnvironment environment = ((OAuthDesktopMobileAuthCodeGrant)authorizationData.Authentication).Environment; CustomerManagementExampleHelper CustomerManagementExampleHelper = new CustomerManagementExampleHelper(this.OutputStatusMessage); CustomerManagementExampleHelper.CustomerManagementService = new ServiceClient <ICustomerManagementService>(authorizationData, environment); var getUserResponse = await CustomerManagementExampleHelper.GetUserAsync(null, true); var user = getUserResponse.User; // Search for the Bing Ads accounts that the user can access. var predicate = new Predicate { Field = "UserId", Operator = PredicateOperator.Equals, Value = user.Id.ToString() }; var paging = new Paging { Index = 0, Size = 10 }; var request = new SearchAccountsRequest { Ordering = null, PageInfo = paging, Predicates = new[] { predicate } }; var accounts = (await CustomerManagementExampleHelper.SearchAccountsAsync( new[] { predicate }, null, paging ))?.Accounts.ToArray(); OutputStatusMessage("The user can access the following Bing Ads accounts: \n"); foreach (var account in accounts) { CustomerManagementExampleHelper.OutputAdvertiserAccount(account); // You can find out which pilot features the customer is able to use. // Each account could belong to a different customer, so use the customer ID in each account. var featurePilotFlags = (await CustomerManagementExampleHelper.GetCustomerPilotFeaturesAsync(account.ParentCustomerId)).FeaturePilotFlags; OutputStatusMessage("Customer Pilot flags:"); OutputStatusMessage(string.Join("; ", featurePilotFlags.Select(flag => string.Format("{0}", flag)))); } } // Catch authentication exceptions catch (OAuthTokenRequestException ex) { OutputStatusMessage(string.Format("Couldn't get OAuth tokens. Error: {0}. Description: {1}", ex.Details.Error, ex.Details.Description)); } // Catch Customer Management service exceptions catch (FaultException <Microsoft.BingAds.V12.CustomerManagement.AdApiFaultDetail> ex) { OutputStatusMessage(string.Join("; ", ex.Detail.Errors.Select(error => string.Format("{0}: {1}", error.Code, error.Message)))); } catch (FaultException <Microsoft.BingAds.V12.CustomerManagement.ApiFault> ex) { OutputStatusMessage(string.Join("; ", ex.Detail.OperationErrors.Select(error => string.Format("{0}: {1}", error.Code, error.Message)))); } catch (Exception ex) { OutputStatusMessage(ex.Message); } }