0

我是Google adwords 的新手 - 我的客户中心。我有一个网站可以使用 Yii 框架查看所有 MCC 活动、广告组、广告等。它工作正常。

我的问题是,如果 Mcc 电子邮件或密码或客户端 ID 无效,则会显示如下代码的错误。

Failed to get authToken. Reason: BadAuthentication 

$response = $this->Login();
095     $fields = $this->ParseResponse($response);
096     if (array_key_exists('Error', $fields)) {
097       $error = $fields['Error'];
098       if (array_key_exists('Info', $fields)) {
099         $error .= ': ' . $fields['Info'];
100       }
101       $url = array_key_exists('Url', $fields) ? $fields['Url'] : NULL;
102       $captchaToken = array_key_exists('CaptchaToken', $fields) ?
103           $fields['CaptchaToken'] : NULL;
104       $captchaUrl = array_key_exists('CaptchaUrl', $fields) ?
105           $fields['CaptchaUrl'] : NULL;
106       throw new AuthTokenException($error, $url, $captchaToken, $captchaUrl);
107     } else if (!array_key_exists('Auth', $fields)) {
108       throw new AuthTokenException('Unknown');
109     } else {
110       return $fields['Auth'];
111     }
112   }
113 
114   /**
115    * Makes the client login request and stores the result.
116    * @return string the response from the ClientLogin API
117    * @throws AuthTokenException if an error occurs during authentication
118    */

但我想将错误显示为“您的帐户无效”。请告知我可以在哪里写条件以检查帐户是否有效。

我对此没有太多想法。我搜索了 google adwords api 客户端库,发现了以下“ http://code.google.com/p/google-api-adwords-php/downloads/list ”。之后,下载 aw_api_php_lib_3.2.2.tar.gz 并将该代码放在“mysite/protected/”文件夹中。我已经修改了“mysite/protected/adwords/src/Google/Api/Ads/AdWords/auth.ini”文件中的配置。

在视图文件 [mysite/protected/views/site/view.php] 中,我将 Adwords 函数称为:

Yii::import('application.adwords.*');
require_once('examples/v201206/BasicOperations/GetCampaigns.php')
$user = new AdWordsUser();
$user->LogAll();
$result_camp = GetCampaignsExample($user);

它返回所有广告系列。但是如果我提供了错误的配置细节,它会显示上述错误 [Failed to get authToken. 原因:BadAuthentication]。我想以指定的格式显示错误。请指教。

4

1 回答 1

0

@lifeline,当您调用方法$user->GetService(GetCampaings.php)时会发生错误。如果您想使用示例代码获取campaings,请处理以下行中的异常:

try{
    $result_camp = GetCampaignsExample($user);
}
catch(Exception $e) {
    // display your error message
}

我建议您阅读AdWords API 文档,因为该GetService方法可能会抛出很多不同的异常,具体取决于服务类型(您使用的是CampaignService)。尝试详细了解 AdWords API 中的错误处理,以减少未来的麻烦。:)

此外,用于身份验证的 ClientLogin 方法(您正在使用)已被正式弃用。在此处查看更多详细信息。

于 2013-02-22T18:28:31.143 回答