Hello maybe anyone has an idea whats wrong.
The Error comes if i try in the code link the Manager account with the client.
class LinkManagerToClient {
const MANAGER_CUSTOMER_ID = MANAGER_CUSTOMER_ID;
const CUSTOMER_ID = CUSTOMER_ID;
const PAGE_SIZE = 50;
public static function main() {
$options = (new ArgumentParser())->parseCommandArguments([
ArgumentNames::MANAGER_CUSTOMER_ID => GetOpt::REQUIRED_ARGUMENT,
ArgumentNames::CUSTOMER_ID => GetOpt::REQUIRED_ARGUMENT
]);
try {
self::runExample(
$options[ArgumentNames::MANAGER_CUSTOMER_ID] ?: self::MANAGER_CUSTOMER_ID,
$options[ArgumentNames::CUSTOMER_ID] ?: self::CUSTOMER_ID
);
} catch (GoogleAdsException $googleAdsException) {
printf(
"Request with ID '%s' has failed.%sGoogle Ads failure details:%s",
$googleAdsException->getRequestId(),
PHP_EOL,
PHP_EOL
);
foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() as $error) {
printf(
"\t%s: %s%s",
$error->getErrorCode()->getErrorCode(),
$error->getMessage(),
PHP_EOL
);
}
} catch (ApiException $apiException) {
printf(
"ApiException was thrown with message '%s'.%s",
$apiException->getMessage(),
PHP_EOL
);
}
}
public static function runExample(int $managerCustomerId, int $clientCustomerId) {
$customerClientLinkResourceName = self::createInvitation($managerCustomerId, $clientCustomerId);
$managerLinkResourceName = self::getManagerLinkResourceName($managerCustomerId, $clientCustomerId, $customerClientLinkResourceName);
}
public static function createInvitation(int $managerCustomerId, int $clientCustomerId) {
$googleAdsClient = self::createGoogleAdsClient($managerCustomerId);
$customerClientLink = new CustomerClientLink([
'client_customer' => new StringValue(['value' => ResourceNames::forCustomer($clientCustomerId)]),
'status' => ManagerLinkStatus::PENDING
]);
$customerClientLinkOperation = new CustomerClientLinkOperation();
$customerClientLinkOperation->setCreate($customerClientLink);
$customerClientLinkServiceClient = $googleAdsClient->getCustomerClientLinkServiceClient();
$response = $customerClientLinkServiceClient->mutateCustomerClientLink($managerCustomerId, $customerClientLinkOperation);
$customerClientLinkResourceName = $response->getResult()->getResourceName();
return $customerClientLinkResourceName;
}
public static function getManagerLinkResourceName(int $managerCustomerId, int $clientCustomerId, string $customerClientLinkResourceName) {
$googleAdsClient = self::createGoogleAdsClient($managerCustomerId);
$query = "SELECT customer_client_link.manager_link_id FROM customer_client_link WHERE customer_client_link.resource_name = '$customerClientLinkResourceName'";
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
$response = $googleAdsServiceClient->search(
$managerCustomerId,
$query,
['pageSize' => self::PAGE_SIZE]
);
$managerLinkId = $response->getIterator()->current()
->getCustomerClientLink()
->getManagerLinkIdUnwrapped();
$managerLinkResourceName = ResourceNames::forCustomerManagerLink($clientCustomerId, $managerCustomerId, $managerLinkId);
return $managerLinkResourceName;
}
private static function createGoogleAdsClient(int $loginCustomerId) {
try {
$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile()
->build();
} catch (Exception $e) {
echo '3 Caught exception: ', $e->getMessage(), "\n";
}
try {
return (new GoogleAdsClientBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->withLoginCustomerId($loginCustomerId)
->build();
} catch (Exception $e) {
echo '4 Caught exception: ', $e->getMessage(), "\n";
// header("Location: $global_domain/?g_ads=error&g_ads_accountId=1");
exit;
}
}
}