示例#1
0
        /// <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());
        }
示例#5
0
        /// <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());
        }
示例#6
0
        /// <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;
        }
示例#7
0
        /// <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);
            }
        }