GoogleAnalyticsクエリレポート-PHP

US-1234

トップ10ページを表示し、ブラウザ数を表示するWebアプリケーションでGoogle Analyticsレポートを表示しようとしています。このリンクを使用しています、Hello Analytics Reporting API v4; それを開発するためのサービスアカウントのPHPクイックスタートエラーを下回っています、

POSTの呼び出し中にエラーが発生しましたhttps://analyticsreporting.googleapis.com/v4/reports:batchGet:(401)リクエストに必要な認証資格情報がありません。必要なOAuth2アクセストークン、ログインCookie、またはその他の有効な認証資格情報

コード:

$analytics = initializeAnalytics();
$response = getReport($analytics);
printResults($response);


function initializeAnalytics()
{

    // Use the developers console and download your service account
    // credentials in JSON format. Place them in this directory or
    // change the key file location if necessary.
    $KEY_FILE_LOCATION = __DIR__ . '/preprod-b18917fe321f.json';

    // Create and configure a new client object.
    $client = new Google_Client();
    $client->setApplicationName("Hello Analytics Reporting");
    $client->setAuthConfig('{"web":{}}'); // provided the .json credentials
    $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
    $analytics = new Google_Service_AnalyticsReporting($client);

    return $analytics;
}


function getReport($analytics) {

    // Replace with your view ID, for example XXXX.
    $VIEW_ID = "xxxxxx";

    // Create the DateRange object.
    $dateRange = new Google_Service_AnalyticsReporting_DateRange();
    $dateRange->setStartDate("7daysAgo");
    $dateRange->setEndDate("today");

    // Create the Metrics object.
    $sessions = new Google_Service_AnalyticsReporting_Metric();
    $sessions->setExpression("ga:sessions");
    $sessions->setAlias("sessions");

    // Create the ReportRequest object.
    $request = new Google_Service_AnalyticsReporting_ReportRequest();
    $request->setViewId($VIEW_ID);
    $request->setDateRanges($dateRange);
    $request->setMetrics(array($sessions));

    $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
    $body->setReportRequests( array( $request) );
    return $analytics->reports->batchGet( $body );
}


/**
 * Parses and prints the Analytics Reporting API V4 response.
 *
 * @param An Analytics Reporting API V4 response.
 */
function printResults($reports) {
    for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {
        $report = $reports[ $reportIndex ];
        $header = $report->getColumnHeader();
        $dimensionHeaders = $header->getDimensions();
        $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
        $rows = $report->getData()->getRows();

        for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
            $row = $rows[ $rowIndex ];
            $dimensions = $row->getDimensions();
            $metrics = $row->getMetrics();
            for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
                print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
            }

            for ($j = 0; $j < count($metrics); $j++) {
                $values = $metrics[$j]->getValues();
                for ($k = 0; $k < count($values); $k++) {
                    $entry = $metricHeaders[$k];
                    print($entry->getName() . ": " . $values[$k] . "\n");
                }
            }
        }
    }
}

誰かが私にこのエラーを取り除くためのアイデアを教えてください。

DaImTo

POSTの呼び出し中にエラーが発生しましたhttps://analyticsreporting.googleapis.com/v4/reports:batchGet:(401)リクエストに必要な認証資格情報がありません。必要なOAuth2アクセストークン、ログインCookie、またはその他の有効な認証資格情報

ログインしていないということは、コードを実行する前にクライアントを適切に認証していないことを意味します。

サービスアカウントで発生する可能性のある問題

  1. $client->setAuthConfig('{"web":{}}');これがjsonキーファイルへの正しいパスであることを確認してくださいおそらく$KEY_FILE_LOCATION
  2. Google Developer Consoleでサービスアカウントの認証情報を作成したことを確認してください。このコードは、サービスアカウントのキーファイルでのみ機能します。
  3. Googleアナリティクスアカウントへのアクセスをサービスアカウントに付与したことを確認してください。サービスアカウントのメールアドレスを取得し、アカウントレベルでGoogleアナリティクスのユーザーとして追加します。

jsonファイルの場所に関する問題

それでもファイルに問題がある場合は、場所を環境に入れることができます

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';
// Use the developers console and download your service account
// credentials in JSON format. Place the file in this directory or
// change the key file location if necessary.
putenv('GOOGLE_APPLICATION_CREDENTIALS='.__DIR__.'/service-account.json');
/**
 * Gets the Google client refreshing auth if needed.
 * Documentation: https://developers.google.com/identity/protocols/OAuth2ServiceAccount
 * Initializes a client object.
 * @return A google client object.
 */
function getGoogleClient() {
    return getServiceAccountClient();
}
/**
 * Builds the Google client object.
 * Documentation: https://developers.google.com/api-client-library/php/auth/service-accounts
 * Scopes will need to be changed depending upon the API's being accessed. 
 * array(Google_Service_Analytics::ANALYTICS_READONLY, Google_Service_Analytics::ANALYTICS)
 * List of Google Scopes: https://developers.google.com/identity/protocols/googlescopes
 * @return A google client object.
 */
function getServiceAccountClient() {
    try {   
        // Create and configure a new client object.        
        $client = new Google_Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope([YOUR SCOPES HERE]);
        return $client;
    } catch (Exception $e) {
        print "An error occurred: " . $e->getMessage();
    }
}

ServiceAccount.php

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHPリダイレクトファイル内のGoogleAnalytics

分類Dev

phpレポート/クエリビルダー/デザイナー

分類Dev

phpレポート/クエリビルダー/デザイナー

分類Dev

PHPエコーリダイレクト

分類Dev

PHP-MySQLウィークリーセールスレポートクエリの問題

分類Dev

PHPアレイポストエラー

分類Dev

PHP cURLは、リクエストの場合に1回のリクエストでレスポンスヘッダーと本文を取得しますか?

分類Dev

リダイレクトコードPHPのエラー

分類Dev

PHPを使用したリダイレクトページでGoogleAnalyticsを使用して追跡するにはどうすればよいですか?

分類Dev

PHPリダイレクト同じアドレス異なるポート

分類Dev

php からのレスポンスを ajax リクエストに保存する

分類Dev

PHPのブレークポイント

分類Dev

PHPエコーとリダイレクト

分類Dev

ストリームとしてphpからcsvにエクスポート

分類Dev

PHPバックエンドのGoogleAnalytics API

分類Dev

クエリパラメータを使用したPHPリダイレクト

分類Dev

PHP:ピリオドを挿入し、.csvをエクスポートします

分類Dev

PHPでのRESTAPIリクエスト-クエリエラー

分類Dev

複数のループテンプレートを使用したphpクエリ

分類Dev

ページリダイレクトPHP

分類Dev

php自動化ポストリクエストを送信する

分類Dev

PHPエラーレポートの生産と開発

分類Dev

改行付きの画面へのPHPエラーレポート

分類Dev

PHPでCSVファイルをエクスポートするためのmysqlクエリ

分類Dev

.htaccessリダイレクトphpクエリ

分類Dev

PHPリクエストにパスフレーズを使用する

分類Dev

PHP unlink()エラー:「ディレクトリが空ではありません」

分類Dev

ディレクトリ内のphpエコーファイル名?

分類Dev

ディレクトリ内のphpエコーファイル名?

Related 関連記事

  1. 1

    PHPリダイレクトファイル内のGoogleAnalytics

  2. 2

    phpレポート/クエリビルダー/デザイナー

  3. 3

    phpレポート/クエリビルダー/デザイナー

  4. 4

    PHPエコーリダイレクト

  5. 5

    PHP-MySQLウィークリーセールスレポートクエリの問題

  6. 6

    PHPアレイポストエラー

  7. 7

    PHP cURLは、リクエストの場合に1回のリクエストでレスポンスヘッダーと本文を取得しますか?

  8. 8

    リダイレクトコードPHPのエラー

  9. 9

    PHPを使用したリダイレクトページでGoogleAnalyticsを使用して追跡するにはどうすればよいですか?

  10. 10

    PHPリダイレクト同じアドレス異なるポート

  11. 11

    php からのレスポンスを ajax リクエストに保存する

  12. 12

    PHPのブレークポイント

  13. 13

    PHPエコーとリダイレクト

  14. 14

    ストリームとしてphpからcsvにエクスポート

  15. 15

    PHPバックエンドのGoogleAnalytics API

  16. 16

    クエリパラメータを使用したPHPリダイレクト

  17. 17

    PHP:ピリオドを挿入し、.csvをエクスポートします

  18. 18

    PHPでのRESTAPIリクエスト-クエリエラー

  19. 19

    複数のループテンプレートを使用したphpクエリ

  20. 20

    ページリダイレクトPHP

  21. 21

    php自動化ポストリクエストを送信する

  22. 22

    PHPエラーレポートの生産と開発

  23. 23

    改行付きの画面へのPHPエラーレポート

  24. 24

    PHPでCSVファイルをエクスポートするためのmysqlクエリ

  25. 25

    .htaccessリダイレクトphpクエリ

  26. 26

    PHPリクエストにパスフレーズを使用する

  27. 27

    PHP unlink()エラー:「ディレクトリが空ではありません」

  28. 28

    ディレクトリ内のphpエコーファイル名?

  29. 29

    ディレクトリ内のphpエコーファイル名?

ホットタグ

アーカイブ