Я новичок в Google Analytics Api. Я только начал работать над небольшим проектом, в котором я хочу получить данные из API и отобразить их на информационной панели каждого пользователя, используя одну учетную запись Google Analytics. Я пытался следовать руководству, предоставленному Google, и вносил коррективы, где это было необходимо, из-за обновления библиотеки.
Я работаю на платформе на основе codeigniter, и мне удалось создать клиентский объект Google, а также использовать токен обновления, сохраненный в базе данных. Я использую токен обновления для того, чтобы данные были доступны на панели инструментов без необходимости каждый раз входить в систему вручную.
Токен доступа появляется каждый раз, когда я вхожу в систему, и я могу использовать его для установки токена доступа клиента и создания объекта Google Service Analytics. ($service = new Google_Service_Analytics($client);).
Я распечатываю сервис и вижу идентификатор клиента, секрет клиента и т. Д. И маркер доступа, который ему передается; но другие, как Google_Service_Analytics_DataGa_Resource
Объекты пусты (я не знаю, должны ли они быть такими или нет на данном конкретном этапе?).
Когда я пытаюсь запросить учетные записи пользователей
$accounts = $analytics->management_accounts->listManagementAccounts();,
Я получаю пустой экран, и мой вид не отображается.
Я не мог найти такую проблему раньше, поэтому я немного растерялся, почему это происходит. Я не получаю никаких сообщений об ошибках или чего-либо, что могло бы указать мне причину или правильное направление.
Примечание: мне удалось заставить его работать с использованием тех же учетных данных через JavaScript, но в данном случае это не то, что я ищу. Мне удалось получить данные, отобразить данные в диаграммах и т. Д. С помощью JS. Я новичок в создании постов, поэтому, если что-то потребуется с моей стороны, чтобы у вас было лучшее представление о том, что происходит, пожалуйста, дайте мне знать.
Я был бы очень признателен, если бы я мог получить какие-либо указания на то, почему это может происходить, или на то, что могло бы направить меня на правильный путь.
Codeigniter контроллер класса следующим образом
// Step 1 - Load PHP Client Libraries
require_once APPPATH.'libraries/Google/Client.php';
require_once APPPATH.'libraries/Google/Analytics.php';
class GoogleTest extends CI_Controller {
public function index(){
$this->load->helper(array('url','form'));
$this->load->model('googleapi_model'); //used to get the refresh token
// Step 2 - Start a session to persist credentials
session_start();
// Step 3 - Create and configure a new client object
$client = new Google_Client();
$client->setApplicationName("API Project");
// Insert client id, api key, client secret, project scope and redirect uri
$client->setDeveloperKey("***************");
$client->setClientId('********************');
$client->setClientSecret('******************');
$client->setRedirectUri('****************');
$client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));// Check if refresh token exists, it is used to login users automatically & it is being generated only once when you login the first time from the created
// google analytics app, this will take precedence to Step 4 or 6 below ;
if(count($this->googleapi_model->getGoogleRefreshToken()) > 0){
$db_refresh_token = $this->googleapi_model->getGoogleRefreshToken();
$client->refreshToken($db_refresh_token[0]->refreshtoken);
$_SESSION['token'] = $client->getAccessToken();
}else{
if ($client->getAccessToken()) {
$token = $client->getAccessToken();
$authObj = json_decode($token);
$refreshToken = $authObj->refresh_token;
if(isset($refreshToken) && $refreshToken != null){
$this->googleapi_model->insertGoogleRefreshToken($refreshToken);
}
}
}
//Step 4 - Handle authorization flow from the server
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST']. $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
// Step 5 - Retrieve and use stored credentials
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
// Stept 6 - Either prompt the user to login or run the demo
if(!$client->getAccessToken()){
$authUrl = $client->createAuthUrl();
$this->data['auth'] = $authUrl;
}else{ //Create analytics service object
echo 'authenticated';
$analytics = new Google_Service_Analytics($client);
//TILL HERE MY CODE WORKS FINE, NO ERRORS, VIEW BEING RENDERED
$accounts = $analytics ->management_accountSummaries->listManagementAccountSummaries();
// $accounts = $analytics->management_accounts->listManagementAccounts();
echo '<pre>';
print_r($analytics);
echo '</pre>';
}
$this->data['content'] = '/public/dashboard/google_test';
$this->load->view('template/template', $this->data);
}
Убедитесь, что вы вошли в аккаунт Google, в котором находится приложение API.
И что вы нажали «подключиться».
Затем запустите скрипт.
Также включите отчеты об ошибках (включая уведомления)
Других решений пока нет …