如何在PHP脚本之间的$ _SESSION变量中放置Google Analytics对象? (非对象错误)

时间:2014-05-08 20:42:14

标签: javascript php jquery ajax google-analytics-api

我正在使用Google AnalyticsAPI构建一个Web应用程序,但我在考虑实现时遇到了一些困难。

我允许用户从三个相互依赖的下拉菜单中选择他们的个人资料(想想country-> state-> city)。我正在使用AJAX从第一个下拉列表(国家/地区)中获取值,并且我尝试在外部PHP脚本中填充Google Analytics API的第二个下拉列表。

我正在尝试通过index.php中的$ _SESSION变量将Analytics对象($ analytics)转移到外部脚本,但我无法调用填充第二个下拉列表所需的$ analytics函数。

我var_dumped变量,它最初告诉我它是一个不完整的PHP类,所以我序列化它并在两个类之间反序列化。但是,它仍然给了我:

Fatal error:  Call to a member function listManagementWebproperties() on a non-object

我想知道是否有办法做到这一点?

只是为了澄清:

index.php

        //create a session analytics object for use in external scripts
        $_SESSION['analytics'] = serialize($analytics;) //used for API calls

和外部脚本中的行抛出我的AJAX请求中的错误 propertyID.php

$analytics = unserialize($_SESSION['analytics']);
$webProperty = $analytics->management_webproperties->listManagementWebproperties($accountID); //the array used to populate the drop-down

编辑:由于API对象,这可能是一个问题吗?

2 个答案:

答案 0 :(得分:2)

我认为它可能与一些使类不可序列化的瞬态数据有关。

我认为您必须在每次页面调用中创建Google对象,并在$ _SESSION中仅序列化用于创建这些实例的数据。

答案 1 :(得分:1)

我找到了问题的解决方案/解决方法。

您可以将Google_Service_Analytics()对象存储在会话中,而不是将Google_Client()对象存储在会话中。从那里你可以像平常一样声明$analytics对象:

$analytics = new Google_Service_Analytics($client);