【问题标题】:Call to undefined method Google_Client in Google Analytics while using HelloAnalyticsApi使用 HelloAnalyticsApi 时调用 Google Analytics 中未定义的方法 Google_Client
【发布时间】:2014-04-17 17:37:38
【问题描述】:

我正在使用核心报告 API 进行报告。我已经在我的本地主机服务器上安装了 Google PHP API 客户端主服务器,并在我包含的 src 文件夹中创建了一个文件 HelloAnalyticsAPi.php

谷歌/Client.php , 谷歌/服务/Analytics.php

文件。并使用以下详细信息

$client->setClientId('XXXXXXXXXXX.apps.googleusercontent.com'); 
$client->setClientSecret('XXXXXXXXXXX'); 
$client->setRedirectUri('http://localhost/analytics/src/HelloAnalyticsApi.php'); 
$client->setDeveloperKey('XXXXXXXXXXX'); 
$client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));
$client->setUseObjects(true);

我在 setUseObjects 上有致命错误。错误是Fatal error: Call to undefined method Google_Client::setUseObjects()。我也在我的谷歌分析后端做了一些授权。

请告诉我在我的服务器上获取报告的整个过程。因为我无法理解他们给出的谷歌分析开发者指南。


【问题讨论】:

  • 不要对代码示例使用真实值(客户端密码、开发人员密钥等)。根据您的错误,您没有使用最新的客户端库。最近有一些变化,因为它仍处于测试阶段。请从github.com/google/google-api-php-client更新它
  • @ShanthaKumara 我采用了 github 本身的代码。
  • 确保您不会丢失 google 目录中的任何文件。并仔细检查路径是否正确。
  • @deepakbhardwaj,我使用的是“1.0.4-beta”版本,没有适合您的示例代码的方法。您可能使用的是旧版本的 Google API 客户端库。

标签: php google-app-engine google-analytics google-api google-analytics-api


【解决方案1】:

您遇到的问题是您使用了错误的客户端库。 Hello Analytics API 教程是使用 Code.google - google-api-php-client 上的旧库而不是 github 上的较新版本创建的。

更新: 由于教程仍未更新,因此我制作了一个可能会有所帮助的教程。 Google Oauth2 php。下面的代码是直接从中撕下来的。本教程将保持最新,您可能需要检查是否有任何更改。

<?php         
require_once 'Google/Client.php';     
require_once 'Google/Service/Analytics.php';       
session_start();      
$client = new Google_Client();
    $client->setApplicationName("Client_Library_Examples");
    $client->setDeveloperKey("{devkey}");  
    $client->setClientId('{clientid}.apps.googleusercontent.com');
    $client->setClientSecret('{clientsecret}');
    $client->setRedirectUri('http://www.daimto.com/Tutorials/PHP/Oauth2.php');
    $client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));

    //For loging out.
    if ($_GET['logout'] == "1") {
    unset($_SESSION['token']);
       }   

    // Step 2: The user accepted your access now you need to exchange it.
    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 1:  The user has not authenticated we give them a link to login    
    if (!$client->getAccessToken() && !isset($_SESSION['token'])) {
        $authUrl = $client->createAuthUrl();
        print "<a class='login' href='$authUrl'>Connect Me!</a>";
        }        

    // Step 3: We have access we can now create our service
    if (isset($_SESSION['token'])) {
        print "<a class='logout' href='".$_SERVER['PHP_SELF']."?logout=1'>LogOut</a><br>";
        $client->setAccessToken($_SESSION['token']);
        $service = new Google_Service_Analytics($client);    

        // request user accounts
        $accounts = $service->management_accountSummaries->listManagementAccountSummaries();

       foreach ($accounts->getItems() as $item) {
        echo "Account: ",$item['name'], "  " , $item['id'], "<br /> \n";        
        foreach($item->getWebProperties() as $wp) {
            echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebProperty: ' ,$wp['name'], "  " , $wp['id'], "<br /> \n";    

            $views = $wp->getProfiles();
            if (!is_null($views)) {
                foreach($wp->getProfiles() as $view) {
                //  echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;View: ' ,$view['name'], "  " , $view['id'], "<br /> \n";    
                }
            }
        }
    } // closes account summaries

    }
 print "<br><br><br>";
 print "Access from google: " . $_SESSION['token']; 
?>

【讨论】:

  • 我会使用新的。有一些样本。旁注:该教程问题的 GA 开发人员。他们正在研究新的。但我不能告诉你他们什么时候上线。
  • 7 个月后,旧教程仍然存在,代码仍然在从 GitHub 全新安装时生成此错误。跛脚
  • @jerrygarciuh 是的,我知道,我有一个教程可以帮助daimto.com/google-oauth2-php
  • 非常感谢。截至 2014 年 12 月 2 日,我可以确认这是有效的!
  • 那么,setUseObjects函数的等价物是什么?
猜你喜欢
  • 1970-01-01
  • 2012-08-04
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多