1

我已经获得了用于分析的代码,以便它能够查询 Google Analytics 并返回结果,但是当我尝试使用代码来查询网站管理员工具时,它返回的权限不足。

支持 Google 的 API 是:分析 API、谷歌搜索控制台 API

有什么我想念的吗?

谷歌分析代码:

$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"
 }
}
4

1 回答 1

1

当您运行第一个时,您询问用户我可以访问您的谷歌分析数据,用户说是的,您可以得到一个访问令牌,可用于访问他们的谷歌分析数据。

在第二个中,您询问用户我可以访问您的网站管理员工具数据,用户说是的,您可以获得访问令牌来访问他们的网站管理员工具数据。

如果您将两个范围而不是一个范围放在哪里,则会询问用户我可以访问您的谷歌分析数据和您的网络主工具数据。如果他们说是,您将获得一个访问令牌来访问它们。

如果您尝试使用分析身份验证请求中的身份验证来访问网站管理员工具,您将获得权限不足。

如果您需要访问两者,则请求访问两者。如果您首先想要一个,然后可能以后想要另一个,那么是的,您将不得不稍后再向他们要另一个。

于 2016-06-17T11:05:06.807 回答