Codebeispiel für Die Suche nach Benutzerkonten
In diesem Beispiel wird veranschaulicht, wie Nach Konten gesucht wird, die vom aktuellen authentifizierten Benutzer verwaltet werden können.
Tipp
Verwenden Sie die Sprachauswahl im Dokumentationsheader, um C#, Java, Php oder Python auszuwählen.
Informationen zum Abrufen von Zugriffs- und Aktualisierungstoken für Ihren Microsoft Advertising-Benutzer und Zum ersten Dienstaufruf mithilfe der Bing Ads-API finden Sie im Schnellstarthandbuch . Sie sollten den Leitfaden für die ersten Schritte und exemplarische Vorgehensweisen für Ihre bevorzugte Sprache lesen, z. B. C#, Java, Php und Python.
Unterstützende Dateien für C#-, Java-, Php- und Python-Beispiele sind auf GitHub verfügbar. Sie können jedes Repository klonen oder Codeausschnitte nach Bedarf erneut verwenden.
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Threading.Tasks;
using Microsoft.BingAds.V13.CustomerManagement;
using Microsoft.BingAds;
namespace BingAdsExamplesLibrary.V13
{
/// <summary>
/// How to search for accounts that can be managed by the current authenticated user.
/// </summary>
public class SearchUserAccounts : ExampleBase
{
public override string Description
{
get { return "Search Accounts for Current User | Customer Management V13"; }
}
public async override Task RunAsync(AuthorizationData authorizationData)
{
try
{
ApiEnvironment environment = ((OAuthDesktopMobileAuthCodeGrant)authorizationData.Authentication).Environment;
CustomerManagementExampleHelper CustomerManagementExampleHelper = new CustomerManagementExampleHelper(
OutputStatusMessageDefault: this.OutputStatusMessage);
CustomerManagementExampleHelper.CustomerManagementService = new ServiceClient<ICustomerManagementService>(
authorizationData: authorizationData,
environment: environment);
OutputStatusMessage("-----\nGetUser:");
var getUserResponse = await CustomerManagementExampleHelper.GetUserAsync(
userId: null);
var user = getUserResponse.User;
OutputStatusMessage("User:");
CustomerManagementExampleHelper.OutputUser(user);
OutputStatusMessage("CustomerRoles:");
CustomerManagementExampleHelper.OutputArrayOfCustomerRole(getUserResponse.CustomerRoles);
// 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
};
OutputStatusMessage("-----\nSearchAccounts:");
var accounts = (await CustomerManagementExampleHelper.SearchAccountsAsync(
predicates: new[] { predicate },
ordering: null,
pageInfo: paging,
null))?.Accounts.ToArray();
OutputStatusMessage("Accounts:");
CustomerManagementExampleHelper.OutputArrayOfAdvertiserAccount(accounts);
HashSet<long> distinctCustomerIds = new HashSet<long>();
foreach (var account in accounts)
{
distinctCustomerIds.Add(account.ParentCustomerId);
}
foreach (var customerId in distinctCustomerIds)
{
// 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.
OutputStatusMessage("-----\nGetCustomerPilotFeatures:");
OutputStatusMessage(string.Format("Requested by CustomerId: {0}", customerId));
var featurePilotFlags = (await CustomerManagementExampleHelper.GetCustomerPilotFeaturesAsync(
customerId: customerId)).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.V13.CustomerManagement.AdApiFaultDetail> ex)
{
OutputStatusMessage(string.Join("; ", ex.Detail.Errors.Select(error => string.Format("{0}: {1}", error.Code, error.Message))));
}
catch (FaultException<Microsoft.BingAds.V13.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);
}
}
}
}
package com.microsoft.bingads.examples.v13;
import java.util.Arrays;
import com.microsoft.bingads.*;
import com.microsoft.bingads.v13.customermanagement.*;
import java.util.ArrayList;
import java.util.HashSet;
public class SearchUserAccounts extends ExampleBase {
public static void main(java.lang.String[] args) {
try
{
authorizationData = getAuthorizationData();
CustomerManagementExampleHelper.CustomerManagementService = new ServiceClient<ICustomerManagementService>(
authorizationData,
API_ENVIRONMENT,
ICustomerManagementService.class);
outputStatusMessage("-----\nGetUser:");
GetUserResponse getUserResponse = CustomerManagementExampleHelper.getUser(
null);
User user = getUserResponse.getUser();
outputStatusMessage("User:");
CustomerManagementExampleHelper.outputUser(user);
outputStatusMessage("CustomerRoles:");
CustomerManagementExampleHelper.outputArrayOfCustomerRole(getUserResponse.getCustomerRoles());
// 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.
ArrayOfPredicate predicates = new ArrayOfPredicate();
Predicate predicate = new Predicate();
predicate.setField("UserId");
predicate.setOperator(PredicateOperator.EQUALS);
predicate.setValue("" + user.getId());
predicates.getPredicates().add(predicate);
Paging paging = new Paging();
paging.setIndex(0);
paging.setSize(100);
final SearchAccountsRequest searchAccountsRequest = new SearchAccountsRequest();
searchAccountsRequest.setPredicates(predicates);
searchAccountsRequest.setPageInfo(paging);
outputStatusMessage("-----\nSearchAccounts:");
ArrayOfAdvertiserAccount accounts = CustomerManagementExampleHelper.searchAccounts(
predicates,
null,
paging,
null).getAccounts();
outputStatusMessage("Accounts:");
CustomerManagementExampleHelper.outputArrayOfAdvertiserAccount(accounts);
ArrayOflong customerIds = new ArrayOflong();
for (AdvertiserAccount account : accounts.getAdvertiserAccounts())
{
customerIds.getLongs().add(account.getParentCustomerId());
}
ArrayList<java.lang.Long> distinctCustomerIds = new ArrayList<java.lang.Long>(new HashSet<Long>(customerIds.getLongs()));
for (java.lang.Long customerId : distinctCustomerIds)
{
// 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.
outputStatusMessage("-----\nGetCustomerPilotFeatures:");
outputStatusMessage(String.format("Requested by CustomerId: %s", customerId));
ArrayOfint featurePilotFlags = CustomerManagementExampleHelper.getCustomerPilotFeatures(customerId).getFeaturePilotFlags();
outputStatusMessage("Customer Pilot flags:");
outputStatusMessage(Arrays.toString(featurePilotFlags.getInts().toArray()));
}
}
catch (Exception ex) {
String faultXml = ExampleExceptionHelper.getBingAdsExceptionFaultXml(ex, System.out);
outputStatusMessage(faultXml);
String message = ExampleExceptionHelper.handleBingAdsSDKException(ex, System.out);
outputStatusMessage(message);
}
}
}
<?php
namespace Microsoft\BingAds\Samples\V13;
// For more information about installing and using the Bing Ads PHP SDK,
// see https://go.microsoft.com/fwlink/?linkid=838593.
require_once __DIR__ . "/../vendor/autoload.php";
require_once __DIR__ . "/CustomerManagementExampleHelper.php";
include __DIR__ . "/AuthHelper.php";
include __DIR__ . "/CampaignManagementExampleHelper.php";
use SoapVar;
use SoapFault;
use Exception;
// Specify the Microsoft\BingAds\V13\CustomerManagement classes that will be used.
use Microsoft\BingAds\V13\CustomerManagement\Paging;
use Microsoft\BingAds\V13\CustomerManagement\Predicate;
use Microsoft\BingAds\V13\CustomerManagement\PredicateOperator;
// Specify the Microsoft\BingAds\Auth classes that will be used.
use Microsoft\BingAds\Auth\ServiceClient;
use Microsoft\BingAds\Auth\ServiceClientType;
// Specify the Microsoft\BingAds\Samples classes that will be used.
use Microsoft\BingAds\Samples\V13\AuthHelper;
use Microsoft\BingAds\Samples\V13\CustomerManagementExampleHelper;
try
{
// Authenticate user credentials and set the account ID for the sample.
AuthHelper::Authenticate();
print("-----\r\nGetUser:\r\n");
$getUserResponse = CustomerManagementExampleHelper::GetUser(
null,
true
);
$user = $getUserResponse->User;
print("User:");
CustomerManagementExampleHelper::OutputUser($user);
print("CustomerRoles:");
CustomerManagementExampleHelper::OutputArrayOfCustomerRole($getUserResponse->CustomerRoles);
print "-----\r\nLast SOAP request/response:\r\n";
print $GLOBALS['Proxy']->GetWsdl() . "\r\n";
print $GLOBALS['Proxy']->GetService()->__getLastRequest()."\r\n";
print $GLOBALS['Proxy']->GetService()->__getLastResponse()."\r\n";
// 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.
$pageInfo = new Paging();
$pageInfo->Index = 0; // The first page
$pageInfo->Size = 100; // The first 100 accounts for this page of results
$predicate = new Predicate();
$predicate->Field = "UserId";
$predicate->Operator = PredicateOperator::Equals;
$predicate->Value = $user->Id;
print("-----\r\nSearchAccounts:\r\n");
$accounts = CustomerManagementExampleHelper::SearchAccounts(
array($predicate),
null,
$pageInfo
)->Accounts;
print("Accounts:\r\n");
CustomerManagementExampleHelper::OutputArrayOfAdvertiserAccount($accounts);
$customerIds = array();
foreach ($accounts->AdvertiserAccount as $account)
{
$customerIds[] = $account->ParentCustomerId;
}
$distinctCustomerIds = array_unique($customerIds, SORT_REGULAR);
foreach ($distinctCustomerIds as $customerId)
{
// 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.
print("-----\r\nGetCustomerPilotFeatures:\r\n");
printf("Requested by CustomerId: %s\r\n", $customerId);
$featurePilotFlags = CustomerManagementExampleHelper::GetCustomerPilotFeatures(
$customerId
)->FeaturePilotFlags;
print("Customer Pilot Flags:\r\n");
print join('; ', $featurePilotFlags->int);
}
}
catch (SoapFault $e)
{
printf("-----\r\nFault Code: %s\r\nFault String: %s\r\nFault Detail: \r\n", $e->faultcode, $e->faultstring);
var_dump($e->detail);
print "-----\r\nLast SOAP request/response:\r\n";
print $GLOBALS['Proxy']->GetWsdl() . "\r\n";
print $GLOBALS['Proxy']->GetService()->__getLastRequest()."\r\n";
print $GLOBALS['Proxy']->GetService()->__getLastResponse()."\r\n";
}
catch (Exception $e)
{
// Ignore fault exceptions that we already caught.
if ($e->getPrevious())
{ ; }
else
{
print $e->getCode()." ".$e->getMessage()."\n\n";
print $e->getTraceAsString()."\n\n";
}
}
from auth_helper import *
from customermanagement_example_helper import *
# You must provide credentials in auth_helper.py.
def main(authorization_data):
try:
output_status_message("-----\nGetUser:")
get_user_response=customer_service.GetUser(
UserId=None
)
user = get_user_response.User
customer_roles=get_user_response.CustomerRoles
output_status_message("User:")
output_user(user)
output_status_message("CustomerRoles:")
output_array_of_customerrole(customer_roles)
# 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.
accounts=search_accounts_by_user_id(customer_service, user.Id)
customer_ids=[]
for account in accounts['AdvertiserAccount']:
customer_ids.append(account.ParentCustomerId)
distinct_customer_ids = {'long': list(set(customer_ids))[:100]}
for customer_id in distinct_customer_ids['long']:
# 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.
output_status_message("-----\nGetCustomerPilotFeatures:")
output_status_message("Requested by CustomerId: {0}".format(customer_id))
feature_pilot_flags=customer_service.GetCustomerPilotFeatures(
CustomerId=customer_id
)
output_status_message("Customer Pilot flags:")
output_status_message("; ".join(str(flag) for flag in feature_pilot_flags['int']))
except WebFault as ex:
output_webfault_errors(ex)
except Exception as ex:
output_status_message(ex)
# Main execution
if __name__ == '__main__':
print("Loading the web service client proxies...")
authorization_data=AuthorizationData(
account_id=None,
customer_id=None,
developer_token=DEVELOPER_TOKEN,
authentication=None,
)
customer_service=ServiceClient(
service='CustomerManagementService',
version=13,
authorization_data=authorization_data,
environment=ENVIRONMENT,
)
authenticate(authorization_data)
main(authorization_data)