Files

110 lines
3.9 KiB
PHP

<?php
/**
* Copyright 2021 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// [START analyticsdata_quickstart_oauth2]
require 'vendor/autoload.php';
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\ApiCore\ApiException;
use Google\Auth\OAuth2;
/**
* TODO(developer): Replace this variable with your Google Analytics 4
* property ID before running the sample.
*/
$property_id = 'YOUR-GA4-PROPERTY-ID';
// Start a session to persist credentials.
session_start();
// Set authorization parameters.
$s = file_get_contents('./oauth2.keys.json');
$keys = json_decode($s);
$oauth = new OAuth2([
'scope' => 'https://www.googleapis.com/auth/analytics.readonly',
'tokenCredentialUri' => 'https://oauth2.googleapis.com/token',
'authorizationUri' => $keys->{'web'}->{'auth_uri'},
'clientId' => $keys->{'web'}->{'client_id'},
'clientSecret' => $keys->{'web'}->{'client_secret'},
'redirectUri' => 'http://' . $_SERVER['HTTP_HOST'] . '/',
]);
if (isset($_SESSION['access_token']) && $_SESSION['access_token']
&& isset($_SESSION['refresh_token']) && $_SESSION['refresh_token']) {
// This is the final step of the OAuth2 authorization process, where an
// OAuth2 access token is available and can be used to set up a client.
$oauth->setAccessToken($_SESSION['access_token']);
$oauth->setRefreshToken($_SESSION['refresh_token']);
try {
// Make an API call.
$client = new BetaAnalyticsDataClient(['credentials' => $oauth]);
$request = (new RunReportRequest())
->setProperty('properties/' . $property_id)
->setDateRanges([
new DateRange([
'start_date' => '2020-03-31',
'end_date' => 'today',
]),
])
->setDimensions([new Dimension([
'name' => 'city',
]),
])
->setMetrics([new Metric([
'name' => 'activeUsers',
])
]);
$response = $client->runReport($request);
// Print results of an API call.
print 'Report result: <br />';
foreach ($response->getRows() as $row) {
print $row->getDimensionValues()[0]->getValue()
. ' ' . $row->getMetricValues()[0]->getValue() . '<br />';
}
} catch (ApiException $e) {
// Print an error message.
print $e->getMessage();
}
} elseif (isset($_GET['code']) && $_GET['code']) {
// If an OAuth2 authorization code is present in the URL, exchange it for
// an access token.
$oauth->setCode($_GET['code']);
$oauth->fetchAuthToken();
// Persist the acquired access token in a session.
$_SESSION['access_token'] = $oauth->getAccessToken();
// Persist the acquired refresh token in a session.
$_SESSION['refresh_token'] = $oauth->getRefreshToken();
// Refresh the current page.
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
} else {
// Redirect to Google's OAuth 2.0 server.
$auth_url = $oauth->buildFullAuthorizationUri();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
}
// [END analyticsdata_quickstart_oauth2]