PHP Google Analytics API - 简单示例

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21024672/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 03:44:53  来源:igfitidea点击:

PHP Google Analytics API - Simple example

phpapigoogle-analyticsgoogle-analytics-api

提问by Ing. Michal Hudak

I am trying to set some basic exampleof using Google Analytics with this library: https://github.com/google/google-api-php-client

我正在尝试设置一些使用 Google Analytics 与此库的基本示例https: //github.com/google/google-api-php-client

For starter I have:

首先,我有:

<?php

require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';
$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$client->setDeveloperKey("MY_SECRET_API"); //security measures
$service = new Google_Service_Analytics($client);

$results = $service->data_ga;

echo '<pre>';
print_r($results);
echo '</pre>';

Q:How to get data from Google Analytics from this query ?

问:如何从此查询中获取来自 Google Analytics 的数据?

/*
  https://www.googleapis.com/analytics/v3/data/
  ga?ids=ga%123456
  &dimensions=ga%3Acampaign
  &metrics=ga%3Atransactions
  &start-date=2013-12-25
  &end-date=2014-01-08
  &max-results=50
 */

回答by Prutpot

$client->setDeveloperKey("MY_SECRET_API");

First of all, for as far as I experienced this won't work for authentication, you'll need to use a OAuth2 authentication. There are two options to do this, using client ID for web application or using a service account. Authorization api

首先,据我所知,这不适用于身份验证,您需要使用 OAuth2 身份验证。有两个选项可以执行此操作,使用 Web 应用程序的客户端 ID 或使用服务帐户。授权接口

After you have this, you can make a call like this. (I use a service account here)

有了这个之后,你就可以像这样拨打电话了。(我在这里使用服务帐户)

First authenticate:

首先验证:

$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/analytics.readonly'),
    $key
);
$client->setAssertionCredentials($cred);

Make a call:

打个电话:

$ids = 'ga:123456'; //your id
$startDate = '2013-12-25';
$endDate = '2014-01-08';
$metrics = 'ga:transactions';

$optParams = array(
    'dimensions' => 'ga:campaign',
    'max-results' => '50'
);

$results = $service->data_ga->get($ids, $startDate, $endDate, $metrics, $optParams);

//Dump results
echo "<h3>Results Of Call:</h3>";

echo "dump of results";
var_dump($results);

echo "results['totalsForAllResults']";
var_dump($results['totalsForAllResults']);

echo "results['rows']";
foreach ($results['rows'] as $item) {
    var_dump($item);
}

回答by DaImTo

You will need to do a http get to get the information from the url.

您将需要执行 http get 以从 url 获取信息。

http://www.php.net/manual/en/function.http-get.php

http://www.php.net/manual/en/function.http-get.php

Remember you will still need to add the Oauth2 auth code to the string before you can send that request. This link might help if you dont have auth code already. https://developers.google.com/analytics/solutions/articles/hello-analytics-api#authorize_access

请记住,您仍需要将 Oauth2 身份验证代码添加到字符串中,然后才能发送该请求。如果您还没有授权码,此链接可能会有所帮助。 https://developers.google.com/analytics/solutions/articles/hello-analytics-api#authorize_access

回答by Marty

what you could do is create a new function...

您可以做的是创建一个新功能...

function ga_campaign_transactions($gaEmail, $gaPass, $gProfile, $limit)
{
    require_once('classes/google-analytics/gapi.class.php');

    $gDimensions = array('campaign');
    $gMetrics = array('transactions');
    $gSortMetric = NULL;
    $gFilter = '';
    $gSegment = '';
    $gStartDate = '2013-12-25';
    $gEndDate = '2014-01-08';
    $gStartIndex = 1;
    $gMaxResults = $limit;

    $ga = new gapi($gaEmail, $gaPass);
    $ga->requestReportData($gProfile, $gDimensions, $gMetrics, $gSortMetric, $gFilter, $gSegment, $gStartDate, $gEndDate, $gStartIndex, $gMaxResults);

    $gAnalytics_results = $ga->getResults();

    //RETURN RESULTS
    return $gAnalytics_results;

}


$gProfile = '123456';              // The Profile ID for the account, NOT GA:
$gaEmail = 'YOUR GOOGLE EMAIL';    // Google Email address.
$gaPass  = 'YOUR GOOGLE PASSWORD'; // Google Password.
// NOTE: if 2 step login is turned on, create an application password.

$limit   = 50;
$ga_campaign_transactions = ga_campaign_transactions($gaEmail, $gaPass, $gProfile, $limit)

//OUTPUT
if(!empty($ga_campaign_transactions))
{
    $counter=0;
    $gaCampResults= array(); // CREATE ARRAY TO STORE ALL RESULTS
    foreach($ga_campaign_transactions as $row)
    {

        $dim_list = $row->getDimesions();
        $met_list = $row->getMetrics();

        $gaCampResults[$counter]['campaign'] = $dim_list['campaign'];
        $gaCampResults[$counter]['transactions'] = $met_list['transactions'];
    $counter++;
    }
 }


 if(!empty($gaCampResults))
 {
     $totalCampTransactions = count($gaCampResults);
     ?>
     <h2>We Found ( <?php echo number_format($totalCampTransactions,0);?> ) Results</h2>
     <ul>
     <?php
     foreach($gaCampResults as $gaRow){
       echo "<li>Campaign:".$gaRow['campaign']." | Transactions: ".$gaRow['transactions']."</li>";
     }
     ?>
     </ul>
     <?php
 }

find Analytics Profile ID

查找分析配置文件 ID

Create Google Application password

创建 Google 应用程序密码

Hopefully that puts you on the right track :) untested this, but similar to what I've been using...

希望这能让你走上正确的轨道:) 未经测试,但与我一直在使用的类似......

Marty

马蒂