まず、analytics-*-*.p12ファイルですが、publicには置けないので、resourcesフォルダの下にstaticフォルダを作成し、そこに置きます。
※storageやpublicに置かない様にする。
続いて、google-api-php-clientをインストールします。
githubで最新を確認する。この記事を書いている時点では^2.7が最新です。
https://github.com/googleapis/google-api-php-client
$ composer require google/apiclient:”^2.7″
AdminController.php (*test)
L resource_path(‘static/analytics-*-*.p12’)で、p12を指定する
public function index(){ $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); $client->setDeveloperKey(resource_path('static/analytics-*-*.p12')); dd($client->getAccessToken()); $user = Auth::user(); return view('admin.index',compact('user')); }
nullが返ってくるとOKっぽい。
テスト環境と同じ様に書いてみます。
use Google_Client; use Google_Service_Analytics; $service_account_email = '*.iam.gserviceaccount.com'; $key = file_get_contents(resource_path('static/analytics-*-*.p12')); $profile = '*'; $client = new Google_Client(); $analytics = new Google_Service_Analytics($client); $cred = new Google_Auth_AssertionCredentials( $service_account_email, array(Google_Service_Analytics::ANALYTICS_READONLY), $key ); $client->setAssertionCredentials($cred); if($client->getAuth()->isAccessTokenExpired()){ $client->getAuth()->refreshTokenWithAssertion($cred); }
Class ‘App\Http\Controllers\Google_Auth_AssertionCredentials’ not foundのエラー
issueに原因が載ってます。
https://github.com/GoogleCloudPlatform/nodejs-docs-samples/issues/158
Oh, I've just found https://github.com/google/google-api-php-client/blob/master/UPGRADING.md So it's the docs at https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-php that are wrong.
GoogleDevコンソールで、「サービス アカウント キーの作成」からjsonファイルを作成して、以下に書き換えます。
use Google_Client; use Google_Service_Analytics; $profile = '*'; $client = new Google_Client(); $client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly')); $client->setSubject('*.iam.gserviceaccount.com'); $client->setAuthConfig(array( 'type' => 'service_account', 'client_email' => '*.iam.gserviceaccount.com', 'client_id' => '*', 'private_key' => "-----BEGIN PRIVATE KEY-----***-----END PRIVATE KEY-----\n" )); $analytics= new Google_Service_Analytics($client); $result = $analytics->data_ga->get( 'ga:' . $profile, 'yesterday', '0daysAgo', 'ga:pageviews', array( // "dimensions" => 'ga:pageTitle', "dimensions" => 'ga:pagePath', "sort" => '-ga:pageviews', "max-results" => '10', ) ); $data = $result->rows; dd($data);
これでいけました。結局p12は使わない。
う〜ん、AnalyticsAPIは使うの緊張する。