针对测试MCC帐户进行测试时的AuthorizationError.USER_PERMISSION_DENIED(创建帐户)

时间:2015-05-21 00:13:40

标签: java google-adwords

我正在尝试测试AdWords API以了解其功能。 我无法弄清楚为什么我一直收到AuthorizationError.USER_PERMISSION_DENIED错误。

例如,我尝试在AdWords提供的Java客户端库示例中运行CreateAccount.java。

以下是我的步骤: 1.我创建了一个生产MCC帐户,然后获得“开发人员令牌” 2.我创建了一个测试MCC帐户,然后从控制台获取新的“客户端ID”和“客户端密钥”。从这里我得到了“刷新令牌” 我将“开发人员令牌”(来自上面的第1步),“客户端ID”和“客户端密钥”放到ads.properties中。 3.对于ads.properties中的“用户代理”值,我输入了“项目ID”的名称。 4.对于ads.properties中的“客户客户ID”值,我将测试MCC帐户的客户ID。 5.然后我尝试在下面运行它并得到AuthorizationError.USER_PERMISSION_DENIED错误。

我想知道是否有任何我缺失或做错的步骤。 提前感谢您的帮助。

以下是我正在尝试运行的代码。此行引发了异常:

ManagedCustomerReturnValue result = managedCustomerService.mutate(operations);

这是完整的代码段(来自AdWords代码示例)

// Generate a refreshable OAuth2 credential similar to a ClientLogin token
// and can be used in place of a service account.
Credential oAuth2Credential = new OfflineCredentials.Builder()
    .forApi(Api.ADWORDS)
    .fromFile()
    .build()
    .generateCredential();


// Construct an AdWordsSession.
AdWordsSession session = new AdWordsSession.Builder()
    .fromFile()
    .withOAuth2Credential(oAuth2Credential)
    .build();


AdWordsServices adWordsServices = new AdWordsServices();

// Get the CampaignService.
ManagedCustomerServiceInterface managedCustomerService =
    adWordsServices.get(session, ManagedCustomerServiceInterface.class);


// Create account.
ManagedCustomer customer = new ManagedCustomer();
customer.setName("Customer created with ManagedCustomerService on " + new DateTime());
customer.setCurrencyCode("EUR");
customer.setDateTimeZone("Europe/London");


// Create operations.
ManagedCustomerOperation operation = new ManagedCustomerOperation();
operation.setOperand(customer);
operation.setOperator(Operator.ADD);


ManagedCustomerOperation[] operations = new ManagedCustomerOperation[ {operation};


// Add account.
ManagedCustomerReturnValue result = managedCustomerService.mutate(operations);


// Display accounts.
for (ManagedCustomer customerResult : result.getValue()) {
  System.out.println("Account with customer ID \"" + customerResult.getCustomerId()
      + "\" was created.");
}

2 个答案:

答案 0 :(得分:2)

我想您已按照以下步骤操作:

1]在Google Developer Console上创建了一个应用,并为ads.properties获取了这些值: api.adwords.clientId和api.adwords.clientSecret

2]然后您创建了生产MCC账户,您获得了developerToken。把它放到ads.properties。

3]然后创建了MCC测试帐户,其中您拥有主要的mcc帐户adwords id,您可能已将其放入ads.properties。

4]然后你使用谷歌团队提供的样本运行GetRefreshToken.java来获取刷新令牌。(重新检查这里运行GetRefreshToken.java之后你发布了url java输出控制台到浏览器并通过登录获得了这个应用程序的权限进入你的测试mcc gmail帐户。然后你在浏览器窗口中得到一些字符串。将该字符串作为输入复制到java输出控制台并按回车。在这个阶段你将得到真正的refreshToken作为输出在java输出控制台副本中到你的广告的.properties)。

5]将此设置的useragent设置为一些随机字符串。

6]然后从谷歌团队提供的样本中运行java程序CreateAccount.java。

7]这应该有用。

大多数时候,人们会错误地为“GetRefreshToken.java”逐步生成refreshToken跟踪流程。

答案 1 :(得分:0)

请确保您使用正确的MMC获得了许可。 如果要查看测试客户端数据,则必须在重新登录whit TEST MCC时复制GetRefreshToken生成的链接。如果你想查看产品。客户端数据,您复制由GetRefreshToken生成的链接,同时您在prod中记录。 MCC。

这里有完整的文档:     https://developers.google.com/adwords/api/docs/test-accounts