我正在使用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对象,这可能是一个问题吗?
答案 0 :(得分:2)
我认为它可能与一些使类不可序列化的瞬态数据有关。
我认为您必须在每次页面调用中创建Google对象,并在$ _SESSION中仅序列化用于创建这些实例的数据。
答案 1 :(得分:1)
我找到了问题的解决方案/解决方法。
您可以将Google_Service_Analytics()
对象存储在会话中,而不是将Google_Client()
对象存储在会话中。从那里你可以像平常一样声明$analytics
对象:
$analytics = new Google_Service_Analytics($client);