У меня есть код для работы с аналитикой, так что он управляет запросом в 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"}
}
Когда вы запускаете первое, которое вы спрашиваете у пользователя, могу ли я получить доступ к вашим данным Google Analytics, пользователь говорит, что вы можете, и вы получаете токен доступа, который можно использовать для доступа к его данным Google Analytics.
Во втором вопросе вы спрашиваете пользователя, могу ли я получить доступ к данным ваших инструментов для веб-мастеров, пользователь говорит, что да, вы получаете токен доступа для доступа к данным его инструментов для веб-мастеров.
Если вам нужно указать обе области вместо одной, пользователю будет задан вопрос, могу ли я получить доступ к вашим данным Google Analytics и данным веб-мастеров. Если они скажут «да», вы получите токен для доступа к ним обоим.
Если вы попытаетесь использовать аутентификацию из запроса на авторизацию аналитики для доступа к инструментам веб-мастера, вы получите Недостаточные разрешения.
Если вам нужен доступ к обоим, то запросите доступ к обоим. Если вы сначала хотите один, то, возможно, позже захотите другой, тогда да, вам придется попросить их позже.
Других решений пока нет …