Hello everyone,

I've been using the API for a couple years now with my MCC linked accounts. 
So far so good. Now I want to allow users to provide me access to their 
accounts (OAuth2) and then link their account with my MCC so I can 
supervise their accounts from my AdWords dashboard. Getting the OAuth 
authorization was simple. I'm able to read the user's account data just fine

Problem is that I just can't use ManagedCustomerService's mutate_link to 
connect the client account to my MCC. The problems lies in that I don't 
know what should be the header's clientCustomerId, and I've tried all 
combinations. Here are the problems in details.

Note 1: MCC's id is 590-270-6053, client account 859-502-0823.
Note 2: I acquired the client account id by calling getCustomers in the 
CustomerService.
Note 3: I've tried both production MCC and test MCC account, both with the 
same results. The client account is a real one. The examples below use test 
account

*Scenario 1: MCC's access token, clientCustomerId=client's*

*Outgoing request:* SOAPAction: "mutateLink", User-Agent: Ruby AdHoc 
(AwApi-Ruby/1.2.0, Common-Ruby/1.0.1, GoogleAdsSavon/1.0.3, ruby/2.3.1, 
HTTPI/2.4.3, httpclient), Authorization: REDACTED, Content-Type: 
text/xml;charset=UTF-8, Content-Length: 1050 <?xml version="1.0" 
encoding="UTF-8"?><env:Envelope 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:wsdl="https://adwords.google.com/api/adwords/mcm/v201802"; 
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:ns0="https://adwords.google.com/api/adwords/cm/v201802";><env:Header><wsdl:RequestHeader
 
xmlns="https://adwords.google.com/api/adwords/cm/v201802";><userAgent>Ruby 
AdHoc (AwApi-Ruby/1.2.0, Common-Ruby/1.0.1, GoogleAdsSavon/1.0.3, 
ruby/2.3.1, HTTPI/2.4.3, 
httpclient)</userAgent><developerToken>REDACTED</developerToken>
*<clientCustomerId>8595020823</clientCustomerId>*<partialFailure>true</partialFailure></wsdl:RequestHeader></env:Header><env:Body><mutateLink
 
xmlns="https://adwords.google.com/api/adwords/mcm/v201802";><operations><ns0:operator>
*ADD*</ns0:operator><operand>
*<managerCustomerId>590-270-6053</managerCustomerId><clientCustomerId>8595020823</clientCustomerId>*
<linkStatus>*PENDING*
</linkStatus></operand></operations></mutateLink></env:Body></env:Envelope>

---

*Incoming response:* Content-Type: text/xml; charset=UTF-8, Date: Sat, 31 
Mar 2018 19:43:28 GMT, Expires: Sat, 31 Mar 2018 19:43:28 GMT, 
Cache-Control: private, max-age=0, X-Content-Type-Options: nosniff, 
X-Frame-Options: SAMEORIGIN, X-XSS-Protection: 1; mode=block, Server: GSE, 
Alt-Svc: hq=":443"; ma=2592000; quic=51303432; quic=51303431; 
quic=51303339; quic=51303335,quic=":443"; ma=2592000; v="42,41,39,35", 
Accept-Ranges: none, Vary: Accept-Encoding, Transfer-Encoding: chunked 
<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Header><ns2:ResponseHeader
 
xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201802"; 
xmlns="https://adwords.google.com/api/adwords/cm/v201802";><requestId>000568ba9220b0da0ac12246ad0db968</requestId><serviceName>ManagedCustomerService</serviceName><methodName>mutateLink</methodName><operations>1</operations><responseTime>71</responseTime></ns2:ResponseHeader></soap:Header><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>[AuthorizationError.USER_PERMISSION_DENIED
 
@ ; trigger:'&lt;null&gt;']</faultstring><detail><ns2:ApiExceptionFault 
xmlns="https://adwords.google.com/api/adwords/cm/v201802"; 
xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201802";><*message>[AuthorizationError.USER_PERMISSION_DENIED
 
@ ; 
trigger:'&lt;null&gt;']</message>*<ApplicationException.Type>ApiException</ApplicationException.Type><errors
 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:type="AuthorizationError"><fieldPath></fieldPath><trigger>&lt;null&gt;</trigger><errorString>AuthorizationError.USER_PERMISSION_DENIED</errorString><ApiError.Type>AuthorizationError</ApiError.Type><reason>USER_PERMISSION_DENIED</reason></errors></ns2:ApiExceptionFault></detail></soap:Fault></soap:Body></soap:Envelope>

The error message I suppose is because I'm attempting to do an operation in 
the client's account using MCC's access token, but MCC doesn't have access 
to that account yet.

*Scenario 2: MCC's access token, clientCustomerId=MCC's*

ID: 5902706053, URL: 
https://adwords.google.com/api/adwords/mcm/v201802/ManagedCustomerService, 
Service: ManagedCustomerService, Action: mutate_link, Response time: 203ms, 
Request ID: 000568cde79c64e00ac13309610a7cfe, Operations: 1, Is fault: 
true, Fault message: [ManagedCustomerServiceError.BAD_ID @ operations[0]]

*Outgoing request:* SOAPAction: "mutateLink", User-Agent: Ruby AdHoc 
(AwApi-Ruby/1.2.0, Common-Ruby/1.0.1, GoogleAdsSavon/1.0.3, ruby/2.3.1, 
HTTPI/2.4.3, httpclient), Authorization: REDACTED, Content-Type: 
text/xml;charset=UTF-8, Content-Length: 1050 <?xml version="1.0" 
encoding="UTF-8"?><env:Envelope 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:wsdl="https://adwords.google.com/api/adwords/mcm/v201802"; 
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:ns0="https://adwords.google.com/api/adwords/cm/v201802";><env:Header><wsdl:RequestHeader
 
xmlns="https://adwords.google.com/api/adwords/cm/v201802";><userAgent>Ruby 
AdHoc (AwApi-Ruby/1.2.0, Common-Ruby/1.0.1, GoogleAdsSavon/1.0.3, 
ruby/2.3.1, HTTPI/2.4.3, 
httpclient)</userAgent><developerToken>REDACTED</developerToken><clientCustomerId>
*5902706053*</clientCustomerId><partialFailure>true</partialFailure></wsdl:RequestHeader></env:Header><env:Body><mutateLink
 
xmlns="https://adwords.google.com/api/adwords/mcm/v201802";><operations><ns0:operator>
*ADD*</ns0:operator><operand>
*<managerCustomerId>590-270-6053</managerCustomerId><clientCustomerId>5902706053</clientCustomerId*
><linkStatus>*PENDING*
</linkStatus></operand></operations></mutateLink></env:Body></env:Envelope>

---

*Incoming response:* Content-Type: text/xml; charset=UTF-8, Date: Sun, 01 
Apr 2018 18:47:27 GMT, Expires: Sun, 01 Apr 2018 18:47:27 GMT, 
Cache-Control: private, max-age=0, X-Content-Type-Options: nosniff, 
X-Frame-Options: SAMEORIGIN, X-XSS-Protection: 1; mode=block, Server: GSE, 
Alt-Svc: hq=":443"; ma=2592000; quic=51303432; quic=51303431; 
quic=51303339; quic=51303335,quic=":443"; ma=2592000; v="42,41,39,35", 
Accept-Ranges: none, Vary: Accept-Encoding, Transfer-Encoding: chunked 
<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Header><ns2:ResponseHeader
 
xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201802"; 
xmlns="https://adwords.google.com/api/adwords/cm/v201802";><requestId>000568cde79c64e00ac13309610a7cfe</requestId><serviceName>ManagedCustomerService</serviceName><methodName>mutateLink</methodName><operations>1</operations><responseTime>203</responseTime></ns2:ResponseHeader></soap:Header><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>[ManagedCustomerServiceError.BAD_ID
 
@ operations[0]]</faultstring><detail><ns2:ApiExceptionFault 
xmlns="https://adwords.google.com/api/adwords/cm/v201802"; 
xmlns:ns2="https://adwords.google.com/api/adwords/mcm/v201802";><message>[ManagedCustomerServiceError.BAD_ID
 
@ 
operations[0]]</message><ApplicationException.Type>ApiException</ApplicationException.Type><errors
 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:type="ns2:ManagedCustomerServiceError"><fieldPath>operations[0]</fieldPath><fieldPathElements><field>operations</field><index>0</index></fieldPathElements><trigger></trigger>
*<errorString>ManagedCustomerServiceError.BAD_ID</errorString>*
<ApiError.Type>ManagedCustomerServiceError</ApiError.Type><ns2:reason>UNKNOWN</ns2:reason></errors></ns2:ApiExceptionFault></detail></soap:Fault></soap:Body></soap:Envelope>



--------------------

More details:
* v201802
* using the Ruby client


Can someone help me understand what I'm doing wrong here? Also, one thing 
that is not clear, once I link the account, will it drop any current 
manager the account already has?

Thanks

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and Google+:
https://googleadsdeveloper.blogspot.com/
https://plus.google.com/+GoogleAdsDevelopers/posts
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords 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 Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/adwords-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/c191fde8-2738-408a-9c94-9ee094893d2e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
  • How to link a... Alex de Oliveira
    • Re: How ... 'Luis Xander Talag (AdWords API Team)' via AdWords API Forum
      • Re: ... 'Luis Xander Talag (AdWords API Team)' via AdWords API Forum
        • ... Alex de Oliveira

Reply via email to