We are trying to use `LinkManagerToClient.php` to link agency to the agency client. Explanation of the 3 accounts:
[image: ice_screenshot_20200621-170857.png] <about:invalid#zClosurez> How we can use `LinkManagerToClient.php` to give agency access to the client? Agency and client already gave us permission to https://www.googleapis.com/auth/adwords scope. This article https://developers.google.com/google-ads/api/reference/rpc/v3/CustomerManagerLinkService doesn't have enough information about what we should specify in `google_ads_php.ini` [image: ice_screenshot_20200621-171315.png] Code: define("MANAGER_CUSTOMER_ID", 6170837244); define("CUSTOMER_ID", 6083591644); 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 'Caught exception: ', $e->getMessage(), "\n"; } try { return (new GoogleAdsClientBuilder()) ->fromFile() ->withOAuth2Credential($oAuth2Credential) ->withLoginCustomerId($loginCustomerId) ->build(); } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } } } try { $get_data = new LinkManagerToClient(); $detail_1 = $get_data->createInvitation(MANAGER_CUSTOMER_ID, CUSTOMER_ID); $detail_2 = $get_data->getManagerLinkResourceName(MANAGER_CUSTOMER_ID, CUSTOMER_ID, $detail_1); } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/9d8acc0b-9eff-4a67-91c4-d0a16bf6e4abo%40googlegroups.com.
