Php 如何获取adwords用户';谁的帐户信息?

Php 如何获取adwords用户';谁的帐户信息?,php,google-api-php-client,google-ads-api,Php,Google Api Php Client,Google Ads Api,我希望每个用户都能从我们的网站上获得他们的谷歌广告词活动数据。 所以在第一步中,我从GoogleAPI生成了带有用户id的授权url。 然后,我从google获得代码并生成access_令牌,将刷新令牌存储在每个用户的db中。 在第二步中,我从refresh_令牌创建了AdwordsSession,并尝试使用此会话获取每个用户的活动数据。 但在这种情况下,我得到了拒绝错误的许可。 我怎样才能解决这个问题 生成授权url的代码如下所示 require_once 'vendor/autoload.p

我希望每个用户都能从我们的网站上获得他们的谷歌广告词活动数据。 所以在第一步中,我从GoogleAPI生成了带有用户id的授权url。 然后,我从google获得代码并生成access_令牌,将刷新令牌存储在每个用户的db中。 在第二步中,我从refresh_令牌创建了AdwordsSession,并尝试使用此会话获取每个用户的活动数据。 但在这种情况下,我得到了拒绝错误的许可。 我怎样才能解决这个问题

生成授权url的代码如下所示

require_once 'vendor/autoload.php';

use Google\Auth\CredentialsLoader;
use Google\Auth\OAuth2;

require_once('../credintal.php');

$callbackUrl = "http://networks.ezond.com/adwords/callback.php";
$scopes = "https://www.googleapis.com/auth/adwords https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me";
$AUTHORIZATION_URI = 'https://accounts.google.com/o/oauth2/v2/auth';

$oauth2 = new OAuth2([
        'authorizationUri' => $AUTHORIZATION_URI,
        'redirectUri' => $callbackUrl,
        'tokenCredentialUri' => CredentialsLoader::TOKEN_CREDENTIAL_URI,
        'clientId' => $googleClientID,
        'clientSecret' => $googleClientSecret,
        'scope' => $scopes,
        'state' => $userID
    ]);

$authUrl = $oauth2->buildFullAuthorizationUri();
然后,下面是从authURL获取数据的代码片段

require_once 'vendor/autoload.php';

use Google\Auth\CredentialsLoader;
use Google\Auth\OAuth2;

use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\ReportSettings;
use Google\AdsApi\AdWords\ReportSettingsBuilder;
use Google\AdsApi\AdWords\Reporting\v201705\DownloadFormat;
use Google\AdsApi\AdWords\Reporting\v201705\ReportDefinition;
use Google\AdsApi\AdWords\Reporting\v201705\ReportDefinitionDateRangeType;
use Google\AdsApi\AdWords\Reporting\v201705\ReportDownloader;
use Google\AdsApi\AdWords\v201705\cm\ApiException;
use Google\AdsApi\AdWords\v201705\cm\Paging;
use Google\AdsApi\AdWords\v201705\cm\Predicate;
use Google\AdsApi\AdWords\v201705\cm\PredicateOperator;
use Google\AdsApi\AdWords\v201705\cm\ReportDefinitionReportType;
use Google\AdsApi\AdWords\v201705\cm\Selector;
use Google\AdsApi\AdWords\v201705\cm\OrderBy;
use Google\AdsApi\AdWords\v201705\cm\SortOrder;
use Google\AdsApi\AdWords\v201705\mcm\ManagedCustomerService;
use Google\AdsApi\AdWords\v201705\mcm\CustomerService;
use Google\AdsApi\AdWords\v201705\cm\ReportDefinitionService;

require_once('../credintal.php');

    $userID = $_GET["state"];
    $userAgent = $googleAppName;

    $callbackUrl = "http://networks.ezond.com/adwords/callback.php";
    $scopes = "https://www.googleapis.com/auth/adwords https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me";
    $AUTHORIZATION_URI = 'https://accounts.google.com/o/oauth2/v2/auth';

    $oauth2 = new OAuth2([
        'authorizationUri' => $AUTHORIZATION_URI,
        'redirectUri' => $callbackUrl,
        'tokenCredentialUri' => CredentialsLoader::TOKEN_CREDENTIAL_URI,
        'clientId' => $googleClientID,
        'clientSecret' => $googleClientSecret,
        'scope' => $scopes,
        'approval_prompt' => "force"
    ]);


    $oauth2->setCode($code);
    $authToken = $oauth2->fetchAuthToken();

    $session = (new AdWordsSessionBuilder())
        ->fromFile()
        ->withOAuth2Credential($oauth2)
        ->build();

    $adWordsServices = new AdWordsServices();

    $customerService = $adWordsServices->get($session, CustomerService::class);
    $page = $customerService->getCustomers();
    echo ($page[0]->getCanManageClients());
$customerService = $adWordsServices->get($session, CustomerService::class);
$page = $customerService->getCustomers();
在这种情况下,我可以成功地获取身份验证url、代码和令牌、会话,但无法从下一步获取数据。 下面是生成的错误的代码片段

require_once 'vendor/autoload.php';

use Google\Auth\CredentialsLoader;
use Google\Auth\OAuth2;

use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\ReportSettings;
use Google\AdsApi\AdWords\ReportSettingsBuilder;
use Google\AdsApi\AdWords\Reporting\v201705\DownloadFormat;
use Google\AdsApi\AdWords\Reporting\v201705\ReportDefinition;
use Google\AdsApi\AdWords\Reporting\v201705\ReportDefinitionDateRangeType;
use Google\AdsApi\AdWords\Reporting\v201705\ReportDownloader;
use Google\AdsApi\AdWords\v201705\cm\ApiException;
use Google\AdsApi\AdWords\v201705\cm\Paging;
use Google\AdsApi\AdWords\v201705\cm\Predicate;
use Google\AdsApi\AdWords\v201705\cm\PredicateOperator;
use Google\AdsApi\AdWords\v201705\cm\ReportDefinitionReportType;
use Google\AdsApi\AdWords\v201705\cm\Selector;
use Google\AdsApi\AdWords\v201705\cm\OrderBy;
use Google\AdsApi\AdWords\v201705\cm\SortOrder;
use Google\AdsApi\AdWords\v201705\mcm\ManagedCustomerService;
use Google\AdsApi\AdWords\v201705\mcm\CustomerService;
use Google\AdsApi\AdWords\v201705\cm\ReportDefinitionService;

require_once('../credintal.php');

    $userID = $_GET["state"];
    $userAgent = $googleAppName;

    $callbackUrl = "http://networks.ezond.com/adwords/callback.php";
    $scopes = "https://www.googleapis.com/auth/adwords https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me";
    $AUTHORIZATION_URI = 'https://accounts.google.com/o/oauth2/v2/auth';

    $oauth2 = new OAuth2([
        'authorizationUri' => $AUTHORIZATION_URI,
        'redirectUri' => $callbackUrl,
        'tokenCredentialUri' => CredentialsLoader::TOKEN_CREDENTIAL_URI,
        'clientId' => $googleClientID,
        'clientSecret' => $googleClientSecret,
        'scope' => $scopes,
        'approval_prompt' => "force"
    ]);


    $oauth2->setCode($code);
    $authToken = $oauth2->fetchAuthToken();

    $session = (new AdWordsSessionBuilder())
        ->fromFile()
        ->withOAuth2Credential($oauth2)
        ->build();

    $adWordsServices = new AdWordsServices();

    $customerService = $adWordsServices->get($session, CustomerService::class);
    $page = $customerService->getCustomers();
    echo ($page[0]->getCanManageClients());
$customerService = $adWordsServices->get($session, CustomerService::class);
$page = $customerService->getCustomers();

您能用堆栈跟踪发布准确的错误消息吗
CustomerService.getCustomers()
不应该给
USER\u权限\u拒绝
错误。我也这么认为。但若我评论了这句话,那个么就并没有错误。我在服务器上上传了视频截图文件。url是[link]
#0/ezond/networks/adwords/vendor/googleads/googleads-php-lib/src/Google/AdsApi/Common/Util/Reflection.php(39):ReflectionClass->newInstanceArgs(Array)
1/ezond/networks/adwords/vendor/googleads/googleads-php-lib/src/Google/AdsApi/Common/AdsSoapClient.php(162):Google\AdsApi\Common\Util\Reflection->createInstance('Google\\AdsApi\\A..,Array)