Google AdWords API AuthorizationError.SERVICE_ACCESS_DENIED
Google AdWords API AuthorizationError.SERVICE_ACCESS_DENIED
我正在尝试向 Google AdWords API 发出任何请求,这 return 不会出错。
An error has occurred: [AuthorizationError.SERVICE_ACCESS_DENIED @ ]
我有带有开发人员令牌的生产 MCC 帐户,此外,我还在 google 开发人员控制台中从测试帐户创建了测试 MCC 帐户和 OAuth2 应用程序。
此外,我已经用不同的帐户(生产 MCC、测试 MCC、启用了 adwords 的用户、没有 adwords 的用户)测试了发出请求的身份验证app/user
身份验证
适用于任何 setup/different 客户。我收到 access_token、refresh_token 并过期。
这里是 auth url 的例子,googleads-php-lib 生成
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=XXXX&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fadwords&access_type=offline
请求API
我正在使用 googleads-php-lib/examples 和 curl 进行查询。
我也尝试过不同的服务
这是来自 googleads-php-lib/examples/AdWords/Auth/CreateAdWordsUserWithoutIniFile.php
的片段
$customerService = $user->GetService("CustomerService");
$customer = $customerService->get();
printf("You are logged in as customer: %s\n", $customer->customerId);
更详细的错误日志
[Jul 22 2015 17:58:57.000000 - ERROR] effectiveUser= service=CustomerService method=get operators={} responseTime=233 requestId=00051b757ec645820ac2a364d90c7911 operations=0 units= server=a dwords.google.com isFault=true faultMessage= [AuthorizationError.SERVICE_ACCESS_DENIED @ ]
和
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201506" xmlns="https://adwords.google.com/api/adwords/mcm/v201506">
<ns2:requestId>00051b848d9382a80ac219c38e02d5f3</ns2:requestId>
<ns2:serviceName>CustomerService</ns2:serviceName>
<ns2:methodName>get</ns2:methodName>
<ns2:operations>0</ns2:operations>
<ns2:responseTime>466</ns2:responseTime>
</ResponseHeader>
</soap:Header>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>[AuthorizationError.SERVICE_ACCESS_DENIED @ ]</faultstring>
<detail>
<ApiExceptionFault xmlns="https://adwords.google.com/api/adwords/mcm/v201506" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201506">
<ns2:message>[AuthorizationError.SERVICE_ACCESS_DENIED @ ]</ns2:message>
<ns2:ApplicationException.Type>ApiException</ns2:ApplicationException.Type>
<ns2:errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:AuthorizationError">
<ns2:fieldPath/>
<ns2:trigger/>
<ns2:errorString>AuthorizationError.SERVICE_ACCESS_DENIED</ns2:errorString>
<ns2:ApiError.Type>AuthorizationError</ns2:ApiError.Type>
<ns2:reason>SERVICE_ACCESS_DENIED</ns2:reason>
</ns2:errors>
</ApiExceptionFault>
</detail>
</soap:Fault>
结论
通常 API 确实有效,因为我收到了不同的带有故意错误凭据的错误。
例如
AuthenticationError.NOT_ADS_USER
或
AuthorizationError.USER_PERMISSION_DENIED
- 我应该从哪个帐户登录进行测试?
- 应从哪个帐户创建 OAuth2 应用程序?
- adwords 范围是否足以满足这种情况? AdWords 有更多的范围吗?
感觉好像漏掉了一些逻辑步骤,也许google应该为我批准还是我需要郑重地向北发誓?
非常感谢任何想法。
原来,Google 只允许生产 MCC 的特定服务,我没有测试过。
对于其他 AdWords 用户来说这应该不是问题,因为这种情况是我的 MCC 特有的。
我正在尝试向 Google AdWords API 发出任何请求,这 return 不会出错。
An error has occurred: [AuthorizationError.SERVICE_ACCESS_DENIED @ ]
我有带有开发人员令牌的生产 MCC 帐户,此外,我还在 google 开发人员控制台中从测试帐户创建了测试 MCC 帐户和 OAuth2 应用程序。
此外,我已经用不同的帐户(生产 MCC、测试 MCC、启用了 adwords 的用户、没有 adwords 的用户)测试了发出请求的身份验证app/user
身份验证
适用于任何 setup/different 客户。我收到 access_token、refresh_token 并过期。
这里是 auth url 的例子,googleads-php-lib 生成
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=XXXX&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fadwords&access_type=offline
请求API
我正在使用 googleads-php-lib/examples 和 curl 进行查询。 我也尝试过不同的服务
这是来自 googleads-php-lib/examples/AdWords/Auth/CreateAdWordsUserWithoutIniFile.php
的片段$customerService = $user->GetService("CustomerService");
$customer = $customerService->get();
printf("You are logged in as customer: %s\n", $customer->customerId);
更详细的错误日志
[Jul 22 2015 17:58:57.000000 - ERROR] effectiveUser= service=CustomerService method=get operators={} responseTime=233 requestId=00051b757ec645820ac2a364d90c7911 operations=0 units= server=a dwords.google.com isFault=true faultMessage= [AuthorizationError.SERVICE_ACCESS_DENIED @ ]
和
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201506" xmlns="https://adwords.google.com/api/adwords/mcm/v201506">
<ns2:requestId>00051b848d9382a80ac219c38e02d5f3</ns2:requestId>
<ns2:serviceName>CustomerService</ns2:serviceName>
<ns2:methodName>get</ns2:methodName>
<ns2:operations>0</ns2:operations>
<ns2:responseTime>466</ns2:responseTime>
</ResponseHeader>
</soap:Header>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>[AuthorizationError.SERVICE_ACCESS_DENIED @ ]</faultstring>
<detail>
<ApiExceptionFault xmlns="https://adwords.google.com/api/adwords/mcm/v201506" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201506">
<ns2:message>[AuthorizationError.SERVICE_ACCESS_DENIED @ ]</ns2:message>
<ns2:ApplicationException.Type>ApiException</ns2:ApplicationException.Type>
<ns2:errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:AuthorizationError">
<ns2:fieldPath/>
<ns2:trigger/>
<ns2:errorString>AuthorizationError.SERVICE_ACCESS_DENIED</ns2:errorString>
<ns2:ApiError.Type>AuthorizationError</ns2:ApiError.Type>
<ns2:reason>SERVICE_ACCESS_DENIED</ns2:reason>
</ns2:errors>
</ApiExceptionFault>
</detail>
</soap:Fault>
结论
通常 API 确实有效,因为我收到了不同的带有故意错误凭据的错误。 例如
AuthenticationError.NOT_ADS_USER
或
AuthorizationError.USER_PERMISSION_DENIED
- 我应该从哪个帐户登录进行测试?
- 应从哪个帐户创建 OAuth2 应用程序?
- adwords 范围是否足以满足这种情况? AdWords 有更多的范围吗?
感觉好像漏掉了一些逻辑步骤,也许google应该为我批准还是我需要郑重地向北发誓?
非常感谢任何想法。
原来,Google 只允许生产 MCC 的特定服务,我没有测试过。
对于其他 AdWords 用户来说这应该不是问题,因为这种情况是我的 MCC 特有的。