2014-09-29 3 views
0

Я новичок в Google Analytics Api. Я только начал работать над небольшим проектом, в котором хочу извлечь данные из API и отобразить его на панели управления каждого пользователя, используя одну учетную запись Google Analytics. Я попытался следовать учебному пособию, предоставленному google, и внеся необходимые корректировки из-за обновления в библиотеке.Пустой экран API Google Analytics при запросе учетных записей?

Я работаю на платформе, основанной на кодеджигтере, и мне удалось создать объект Google Клиента, а также использовать токен обновления, который сохраняется в базе данных. Я использую токен обновления, чтобы данные были доступны на панели мониторинга без необходимости вручную вводить их в систему каждый раз.

Токен доступа присутствует каждый раз, когда я вошел в систему, и я могу использовать его для установки токена доступа к клиенту и создания объекта Google Analytics 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); 
    } 
+0

Вы уверены, что это не ошибка PHP? Вы проверяете коды ошибок? Что говорит журнал? В качестве примечания вы должны попытаться сделать свой вопрос более кратким, поскольку его трудно прочитать в его текущей форме. – Tibo

+0

Вы должны опубликовать остальную часть своего кода, которой недостаточно, чтобы отладить ее. BTW: $ service-> management_accountSummaries-> listManagementAccountSummaries(); (быстрее) это также может помочь http://www.daimto.com/google-oauth2-php/ – DaImTo

+0

Спасибо за ваш ответ, я попробовал отладить его уже пару раз, по очереди, чтобы посмотреть, что происходит ; Я также напечатал все объекты, которые я создал. Никаких ошибок не встречалось, просто пустой экран, например, Тибо предположил, что это может быть ошибка PHP, но все же это происходит только в том случае, если я попытаюсь сделать вызов созданной аналитики. Я смущен, потому что это должно быть что-то прямое и легкое в использовании, следуя учебнику ... – Marin

ответ

0

Убедитесь, что вы вошли в учетную запись Google, что API приложение в. И что вы нажали «подключить». Затем запустите сценарий.

Также включить отчет об ошибках (включая уведомления)

Смежные вопросы