Инструменты Google Analytics для веб-мастеров Недостаточно прав

У меня есть код для аналитики, который работает так, что он справляется с запросом Google Analytics и возвращает результаты, однако, когда я пытаюсь использовать код для запроса инструментов для веб-мастеров, он возвращается с недостаточными разрешениями.

Google Enabled API: API Analytics, API Google Search Console

Есть что-то, чего мне не хватает?

Код Google Analytics:

$client = new Google_Client();
$client->setAuthConfigFile($SECRET);
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY); //For analytics stuff
$client->setAccessType('offline');
$client->setPrompt('prompt');

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
    $client->setAccessToken($_SESSION['access_token']);

    //Checking to see if the token is expired
    if($client->isAccessTokenExpired()){
        $client->refreshToken($refreshToken);
        $_SESSION['access_token'] = $client->getAccessToken();
    }

    $results = $analytics->data_ga->get(
         $viewID,
         $fromDate,
         $toDate,
         $metrics,
         $optParams);


    foreach($results->rows as $data){
        echo "<pre>",print_r($data),"</pre>";
    }
}else {
    $redirect_uri = $redirectURL;
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

Код Инструментов для веб-мастеров:

$client = new Google_Client();
$client->setAuthConfigFile($SECRET);
$client->addScope(Google_Service_Webmasters::WEBMASTERS_READONLY); //For WebMaster Tools
$client->setAccessType('offline');
$client->setPrompt('prompt');


if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
    $client->setAccessToken($_SESSION['access_token']);

    //Checking to see if the token is expired
    if($client->isAccessTokenExpired()){
        $client->refreshToken($refreshToken);
        $_SESSION['access_token'] = $client->getAccessToken();
    }
    //Creating Webmaster Service
    $webmastersService = new Google_Service_Webmasters($client);
    $searchanalytics = $webmastersService->searchanalytics;

    //Creating Request
    $request = new Google_Service_Webmasters_SearchAnalyticsQueryRequest();
    $request->setStartDate('2016-05-01');
    $request->setEndDate('2016-05-31');
    $request->setDimensions( array('query') );

    $qsearch = $searchanalytics->query("http://www.example.co.uk", $request);
    $rows = $qsearch->getRows();
    echo "<pre>",print_r($rows),"</pre>";

} else {
    $redirect_uri = $redirectURL;
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

Сообщение об ошибке для Инструментов для веб-мастеров:

{
 "error": {
  "errors": [
    {
      "domain": "global",
      "reason": "insufficientPermissions",
      "message": "Insufficient Permission"
    }
  ],
  "code": 403,
  "message": "Insufficient Permission"
 }
}

1 ответ

Решение

Когда вы запускаете первый запрос, который вы спрашиваете у пользователя, могу ли я получить доступ к вашим данным Google Analytics, пользователь говорит, что вы можете, и вы получаете токен доступа, который можно использовать для доступа к его данным Google Analytics.

Во втором вопросе вы спрашиваете пользователя, могу ли я получить доступ к данным ваших инструментов для веб-мастеров, пользователь говорит, что да, вы получаете токен доступа для доступа к данным их инструментов для веб-мастеров.

Если вам нужно указать обе области вместо одной, пользователю будет задан вопрос, могу ли я получить доступ к вашим данным Google Analytics и данным веб-мастеров. Если они скажут "да", вы получите токен для доступа к ним обоим.

Если вы попытаетесь использовать аутентификацию из запроса авторизации аналитики для доступа к инструментам веб-мастера, вы получите Недостаточные разрешения.

Если вам нужен доступ к обоим, то запросите доступ к обоим. Если вы сначала хотите один, то, возможно, позже захотите другой, тогда да, вы должны будете попросить их о другом позже.

Другие вопросы по тегам