これはGAデータを取得するコードですが、アカウント選択の際にブラウザで常に尋ねられます。 PHPスクリプトのデフォルトアカウントを定義する方法。アカウント選択用のダイアログを表示せずにサーバー側にGoogleアカウントを設定する
私は何が欠けていますか?
これは、GAドキュメントのindex.phpに等しい私はsymfonyフレームワークを使用し、これは、GAドキュメントのoauth2callback.phpに等しく、このルート
/**
* @Route("/get-google-analytics-data")
*/
public function getGoogleAnalyticsData() {
$ga = $this->get('google_analytics_service');
$client = new \Google_Client();
$client->setAuthConfig(__DIR__ . '/client_secrets.json');
$client->addScope(\Google_Service_Analytics::ANALYTICS_READONLY);
// If the user has already authorized this app then get an access token
// else redirect to ask the user to authorize access to Google Analytics.
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
// Set the access token on the client.
$client->setAccessToken($_SESSION['access_token']);
// Create an authorized analytics service object.
$analytics = new \Google_Service_AnalyticsReporting($client);
// Call the Analytics Reporting API V4.
$response = $ga->getReport($analytics);
// Print the response.
return new \Symfony\Component\HttpFoundation\Response($ga->printResults($response));
} else {
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
return $this->redirect($redirect_uri);
}
を変更することを決めました。
}
/**
* @Route("/oauth2callback", name="gaOA2callback")
*/
public function gaOA2callback() {
$client = new \Google_Client();
$client->setAuthConfig(__DIR__ .'/client_secrets.json');
$client->setRedirectUri('http://' . $_SERVER["HTTP_HOST"] . '/oauth2callback');
$client->addScope(\Google_Service_Analytics::ANALYTICS_READONLY);
// Handle authorization flow from the server.
if (! isset($_GET['code'])) {
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
return $this->redirect($auth_url);
} else {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/get-google-analytics-data';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
return $this->redirect($redirect_uri);
}
}