首页 > 后端开发 > php教程 > 使用php的Google Analytics(分析)API V3:获取数据

使用php的Google Analytics(分析)API V3:获取数据

William Shakespeare
发布: 2025-02-19 12:06:13
原创
910 人浏览过

使用php的Google Analytics(分析)API V3:获取数据

在系列的第一部分中,我们介绍了Google Analytics(包括基本用法)。在这一部分中,我们将继续创建我们的演示,并了解如何通过更多功能扩展它。

>

钥匙要点

    >使用PHP利用Google Analytics(Analytics)API V3来有效获取和管理用户帐户数据,包括属性和视图。
  • >实现管理API以检索基于ga_service.php。
  • >利用元数据API使用Google_curlio和Google_httprequest访问和缓存分析元数据,用ETAG属性优化数据检索。
  • >通过将分类,过滤和分割选项合并到API查询中,增强数据自定义和相关性来扩展功能。>
  • 处理PHP中的身份验证,错误响应和JSON数据解析,以确保与Google Analytics(分析)API的安全有效交互。
  • > Google Analytics(分析)API
管理API

>正如我们在第一部分中讨论的那样,管理API负责获取用户帐户,属性,视图……对于我们的第一个示例,我们将检索可为身份验证的用户可用的帐户列表。

>在Ga_service ::帐户中,我们使用授权客户端创建一个新的Google_analyticsService,然后查询API中的帐户列表。

在这种情况下,结果是一个数组,但是API也利用对象,我们只需要在GA_Service :: Init函数中指定它。在以下示例中,我将使用数组结果。
<span>// app/src/GA_Service.php
</span><span>public function accounts(){
</span>	<span>if( !$this->isLoggedIn() ){
</span>		<span>//login
</span>	<span>}
</span>	
	<span>$service = new Google_AnalyticsService($this->client);
</span>	<span>$man_accounts = $service->management_accounts->listManagementAccounts();
</span>	<span>$accounts = [];
</span>
	<span>foreach ($man_accounts['items'] as $account) {
</span>		<span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ];
</span>	<span>}
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/controllers/HomeController.php
</span><span>public function accounts(){
</span>	<span>$accounts = $this->ga->accounts();
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/routes.php
</span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
登录后复制
登录后复制
登录后复制
>

listManagementAccounts函数返回一个包含的数组:>

请注意,当您将数组作为响应返回时,Laravel会自动编码结果作为JSON响应并将其发送到浏览器。
<span>$this->client->setUseObjects(true);</span>
登录后复制
登录后复制
登录后复制
>该结果包含有关总结果和一些分页信息的信息。项目列包含带有其ID,权限等的帐户列表,但是我们通过项目循环以从帐户中提取ID和名称。

如果您想具有结果分页,可以始终将更多选项传递给ListManagementAccount:
<span>{
</span>    kind<span>: "analytics#accounts",
</span>    <span>username: "me@mail.com",
</span>    <span>totalResults: 3,
</span>    <span>startIndex: 1,
</span>    <span>itemsPerPage: 1000,
</span>    <span>items: [
</span>        <span>{
</span>            id<span>: "4449308",
</span>            <span>kind: "analytics#account",
</span>            <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308",
</span>            <span>name: "me@mail.com",
</span>            <span>permissions: {
</span>                effective<span>: [
</span>                    <span>"COLLABORATE",
</span>                    <span>"EDIT",
</span>                    <span>"MANAGE_USERS",
</span>                    <span>"READ_AND_ANALYZE"
</span>                <span>]
</span>            <span>},
</span>            <span>created: "2013-10-01T11:04:28.478Z",
</span>            <span>updated: "2013-10-01T11:04:28.478Z",
</span>            <span>childLink: {
</span>                type<span>: "analytics#webproperties",
</span>                <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties"
</span>            <span>}
</span>        <span>}
</span>    <span>]
</span><span>}</span>
登录后复制
登录后复制
登录后复制

>假设我们将向用户展示其帐户列表,当他们选择一个帐户列表时,我们加载了与之关联的属性列表。

> ga_service :: properties接受帐户ID,并返回该帐户的属性列表。我们基本上具有相同的过程,例如检索帐户。

>
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
登录后复制
登录后复制

每个属性都有一个视图子集。默认情况下,Google添加了一个为每个新属性的查看称为所有网站数据。

>

使用属性列表中的ID和第一部分获取的帐户ID,我们将查询Google Analytics Api中的Aprantics API列表的给定帐户属性的可用视图列表。

<span>// app/src/GA_Service.php
</span><span>public function accounts(){
</span>	<span>if( !$this->isLoggedIn() ){
</span>		<span>//login
</span>	<span>}
</span>	
	<span>$service = new Google_AnalyticsService($this->client);
</span>	<span>$man_accounts = $service->management_accounts->listManagementAccounts();
</span>	<span>$accounts = [];
</span>
	<span>foreach ($man_accounts['items'] as $account) {
</span>		<span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ];
</span>	<span>}
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/controllers/HomeController.php
</span><span>public function accounts(){
</span>	<span>$accounts = $this->ga->accounts();
</span>
	<span>return $accounts;
</span><span>}//accounts
</span>
<span>// app/routes.php
</span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
登录后复制
登录后复制
登录后复制
在浏览器中,击中/views/{councel_id}/{property_id}路由时,我们应该得到类似的东西:

<span>$this->client->setUseObjects(true);</span>
登录后复制
登录后复制
登录后复制
>元数据API

要查询Google Analytics(分析)的一些统计信息,我们需要提供一组维度和指标。

    >指标:指标是您属性中用户活动的单个测量值,例如会话和浏览量。
  • >维度:尺寸分解了某些常见标准(例如国家或浏览器)的指标。
  • 要获取可用元数据的列表,您只需使用curl来查询以下url https://www.googleapis.com/analytics/v3/metadata/ga/columns。>

    google Analytics(分析)为我们提供了一个可用于缓存响应的ETAG属性,因此我们不必在每个请求上查询API。

    google_curlio:一个包裹着一些卷曲的课程,用于处理缓存,身份验证等 - 通过使用此类,我们确保使用etagattribute进行响应。
    <span>{
    </span>    kind<span>: "analytics#accounts",
    </span>    <span>username: "me@mail.com",
    </span>    <span>totalResults: 3,
    </span>    <span>startIndex: 1,
    </span>    <span>itemsPerPage: 1000,
    </span>    <span>items: [
    </span>        <span>{
    </span>            id<span>: "4449308",
    </span>            <span>kind: "analytics#account",
    </span>            <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308",
    </span>            <span>name: "me@mail.com",
    </span>            <span>permissions: {
    </span>                effective<span>: [
    </span>                    <span>"COLLABORATE",
    </span>                    <span>"EDIT",
    </span>                    <span>"MANAGE_USERS",
    </span>                    <span>"READ_AND_ANALYZE"
    </span>                <span>]
    </span>            <span>},
    </span>            <span>created: "2013-10-01T11:04:28.478Z",
    </span>            <span>updated: "2013-10-01T11:04:28.478Z",
    </span>            <span>childLink: {
    </span>                type<span>: "analytics#webproperties",
    </span>                <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties"
    </span>            <span>}
    </span>        <span>}
    </span>    <span>]
    </span><span>}</span>
    登录后复制
    登录后复制
    登录后复制
    >
      google_httprequest:是代表单个http请求的类
    • Makerequest方法返回Google_httprequest实例,我们可以使用GetResponsebody获取我们的元数据响应。
    • >
    • 现在,在访问浏览器中的 /元数据路由时,您应该获得一系列尺寸,而另一个则用于指标,并且每个尺寸都包含一个分组元素的列表。

    为了加快流程,我们将使用Bootsnipp。如果用户登录,我们将显示主页。

    >
    <span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
    登录后复制
    登录后复制

    <span>// app/src/GA_Service.php
    </span><span>public function properties( $account_id ){
    </span>	<span>if( !$this->isLoggedIn() ){
    </span>		<span>//login
    </span>	<span>}
    </span>
    	<span>try {
    </span>		<span>$service = new Google_AnalyticsService($this->client);
    </span>		<span>$man_properties = $service->management_webproperties->listManagementWebproperties($account_id);
    </span>		<span>$properties = [];
    </span>
    		<span>foreach ($man_properties['items'] as $property) {
    </span>			<span>$properties[] = [ 'id' => $property['id'], 'name' => $property['name'] ];
    </span>		<span>}//foreach
    </span>
    		<span>return json_encode($properties);
    </span>	<span>} catch (Google_ServiceException $e) {
    </span>		<span>return Response<span>::</span>json([
    </span>			<span>'status'	=> 0,
    </span>			<span>'code'		=> 3,
    </span>			<span>'message'	=> $e->getMessage()
    </span>		<span>]);
    </span>	<span>}//catch
    </span>
    <span>}//properties
    </span>
    <span>// app/controllers/HomeController.php
    </span><span>public function properties( $account_id ){
    </span>	<span>$properties = $this->ga->properties( $account_id );
    </span>
    	<span>return $properties;
    </span><span>}//properties
    </span>	
    	
    <span>// app/routes.php
    </span><span>Route<span>::</span>get( '/properties/{account_id}', [ 'uses' => 'HomeController@properties' ] )->where('account_id', '\d+');</span>
    登录后复制
    我们需要更新我们的homecontroller@index以显示主页视图。

    从屏幕截图中可以看到

    >,当用户选择一个帐户时,我们异步更改属性和视图。为了实现这一目标,我编写了一些简单的JS,您可以在最终的存储库中检查一下。使用php的Google Analytics(分析)API V3:获取数据>

    >报告API

    通过提供所选视图,指标和维度,我们可以获得有关用户和交互的详细统计信息。用户提交后的结果类似于:

    >
    [
        {
            id: "UA-52317977-1",
            name: "Prop1"
        },
        {
            id: "UA-52317977-2",
            name: "Prop1"
        }
    ]
    登录后复制

    我们的ga_service ::报告接受四个参数:视图ID,开始日期和结束日期以及一系列指标。

    google无法返回您的所有旧数据 - 而是我们提供了一个开始日期和结束日期。在我的示例中,我询问了上个月的结果。

    第三个参数是我们从用户选择中已经拥有的指标列表。

    >

    第四个可选参数是选项的数组。
    - 最大值:结果的最大数量。 (我们使用10加速响应)。
    - 尺寸:逗号分开的值列表。 (GA:Country,GA:City)
    - 过滤器:逗号分开的规则列表要应用于结果。 在此示例中,我们将美国排除在尺寸列表之外,仅显示大于100的页面浏览量。
    > - 段:要应用于数据的高级段ID。
    - 排序:订单结果通过维度或指标。可以结合多个维度和指标。 (ga:country,-ga:pageViews = ga:ga:country上升和ga:pageviews降落。
    - 开始索引:可用于分页。

    <span>// app/src/GA_Service.php
    </span><span>public function accounts(){
    </span>	<span>if( !$this->isLoggedIn() ){
    </span>		<span>//login
    </span>	<span>}
    </span>	
    	<span>$service = new Google_AnalyticsService($this->client);
    </span>	<span>$man_accounts = $service->management_accounts->listManagementAccounts();
    </span>	<span>$accounts = [];
    </span>
    	<span>foreach ($man_accounts['items'] as $account) {
    </span>		<span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ];
    </span>	<span>}
    </span>
    	<span>return $accounts;
    </span><span>}//accounts
    </span>
    <span>// app/controllers/HomeController.php
    </span><span>public function accounts(){
    </span>	<span>$accounts = $this->ga->accounts();
    </span>
    	<span>return $accounts;
    </span><span>}//accounts
    </span>
    <span>// app/routes.php
    </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
    登录后复制
    登录后复制
    登录后复制
    >调用GET GOGEE_ANALYTICSSERVICE :: GET方法后,我们使用结果项目,列标题和总结果的列表将结果作为表输出。>

    使用php的Google Analytics(分析)API V3:获取数据

    扩展演示

    现在,让我们看看如何通过过滤器,分类和段扩展演示。

    >

    >过滤

    >过滤器是从返回结果中排除某些数据的一种方法。他们采用以下形式:

    <span>$this->client->setUseObjects(true);</span>
    登录后复制
    登录后复制
    登录后复制
      ga:列:维度或公制ID(例如:GA:country)
    • >运算符:操作员取决于度量或尺寸列ID的选择,请检查docs以获取运算符列表。
    • 值:该值可以是数字,字符串或正则条件。
    • >
    >您可以组合多个过滤器:您可以将逗号(,)用作操作员或semi-colon(;)作为一个和运算符。

    默认情况下,Google Analytics(分析)将您的所有数据组在一个称为所有会话的组中。但是,您始终可以从内置段中选择或根据您的需求创建一个新的。您可以按推荐,设备类型,年龄,性别等进行分组数据。

    >

    >您可以通过在可用段列表中添加新的选择元素来扩展演示,并如前所述将ID传递给GET方法。

    >您可以访问 /片段页面以查看具有其ID的可用段的列表,您当然可以将其作为一个选项,如我们之前所看到的。
    <span>{
    </span>    kind<span>: "analytics#accounts",
    </span>    <span>username: "me@mail.com",
    </span>    <span>totalResults: 3,
    </span>    <span>startIndex: 1,
    </span>    <span>itemsPerPage: 1000,
    </span>    <span>items: [
    </span>        <span>{
    </span>            id<span>: "4449308",
    </span>            <span>kind: "analytics#account",
    </span>            <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308",
    </span>            <span>name: "me@mail.com",
    </span>            <span>permissions: {
    </span>                effective<span>: [
    </span>                    <span>"COLLABORATE",
    </span>                    <span>"EDIT",
    </span>                    <span>"MANAGE_USERS",
    </span>                    <span>"READ_AND_ANALYZE"
    </span>                <span>]
    </span>            <span>},
    </span>            <span>created: "2013-10-01T11:04:28.478Z",
    </span>            <span>updated: "2013-10-01T11:04:28.478Z",
    </span>            <span>childLink: {
    </span>                type<span>: "analytics#webproperties",
    </span>                <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties"
    </span>            <span>}
    </span>        <span>}
    </span>    <span>]
    </span><span>}</span>
    登录后复制
    登录后复制
    登录后复制
    总结

    Google Analytics(分析)API非常灵活,并提供了许多功能,但是该文档尚未完成,并且没有提供良好的使用示例。通过挖掘源代码并测试可能性和限制,您可以获得更多。

    在本系列中,我们专注于Google Analytics(分析)的基本用法,但是您可以通过Google Analytics(分析仪表板)的选项扩展演示。

    >

    您可以检查本教程的源代码的最终存储库。

    >问题?评论?让我知道!

    经常询问有关使用Google Analytics API V3与php

    使用Google Analytics(常见问题解答)

    >如何开始使用PHP?

    的Google Analytics(分析)API V3开始使用PHP的Google Analytics API V3,您首先需要在Google Developers Console中创建一个项目。创建项目后,启用Google Analytics(分析)API。然后,为API创建凭证。您将收到客户ID和客户端的秘密,您将使用它来通过Google来验证您的应用程序。之后,您可以使用PHP开始向API提出请求。您需要拥有一个Google帐户并访问要检索的Google Analytics(分析数据)。您还需要在服务器上安装PHP,并且对PHP编程的基本了解。

    >如何使用PHP使用Google对我的应用程序进行身份验证我的应用程序?创建API凭据时,您需要使用您收到的客户ID和客户端秘密。您可以使用这些凭据来获取访问令牌,然后您可以使用该凭据来验证您的API请求。

    如何使用php?

    从Google检索Google Analytics(分析)从Google检索数据。使用PHP分析,您需要向Google Analytics(Analytics)API提出GET请求。您可以指定要在请求参数中应用的指标,尺寸和过滤器。 API将以JSON格式返回请求的数据,然后您可以在应用程序中解析并使用。

    >

    >在使用Google Analytics(分析Analytics API V3)使用PHP?

    时,我该如何处理错误。 Google Analytics(分析)API V3具有PHP,出于各种原因可能发生错误,例如无效的请求参数或身份验证问题。您可以通过检查API返回的HTTP状态代码和错误消息来处理这些错误。这将为您提供有关出了什么问题以及如何解决的信息。

    >我可以使用php的Google Analytics API V3跟踪实时数据吗?

    是的,您可以使用Google Analytics(分析)带有PHP的API V3跟踪实时数据。 API提供了一个实时报告API,您可以使用该API检索实时数据,例如网站上的活动用户数量。

    >

    >在使用php的Google Analytics API V3时如何过滤数据?

    >您可以通过在API请求中指定过滤器参数时使用Google Analytics API V3过滤数据。这些参数允许您限制API返回的数据以满足特定条件。

    我可以使用带有PHP的Google Analytics API V3从多个Google Analytics Carescect检索数据吗?可以将Google Analytics(分析)API V3与PHP一起从多个Google Analytics(分析)帐户中检索数据。您只需要分别对每个帐户进行身份验证,并为每个帐户单独提出API请求。

    >在使用php的Google Analytics API V3使用PHP?

    使用Google Analytics(分析分析)API API V3与PHP使用PHP时,我如何分页结果。在您的API请求中。这些参数允许您指定要检索的结果范围。通过在API请求中指定排序参数,V3带有PHP。这些参数允许您根据特定的指标或尺寸订购API返回的数据。

    >

以上是使用php的Google Analytics(分析)API V3:获取数据的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板