如何在自有网站展示Google Analytics仪表盘?PHP+API/OAuth实现可行性咨询
嘿,这两个关于Google Analytics(GA)的问题我之前做项目时刚好研究过,给你详细拆解下~
在自有网站展示Google Analytics仪表盘的方案
1. 如何在自有网站中展示Google Analytics仪表盘?
有两种主流方案,你可以根据需求的灵活度来选:
方案一:使用Google Analytics Embed API(推荐,灵活可定制)
这是官方专门为外部网站嵌入GA数据设计的方案,支持自定义报表、嵌入已保存的仪表盘,还能完美适配你的网站样式。步骤如下:
- 准备工作:
- 登录Google Cloud Console,新建一个项目,启用「Google Analytics Embed API」。
- 配置OAuth同意屏幕(内部使用选「内部」,公开使用需要提交审核),然后创建「Web应用」类型的OAuth客户端ID,把你的网站域名添加到授权的JavaScript来源和重定向URI里。
- 前端实现示例:
先加载GA的API脚本,再初始化并渲染仪表盘:
最后在你的HTML页面里加个容器:// 加载Embed API脚本 (function(w,d,s,g,js,fjs){ g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(cb){this.q.push(cb)}}; js=d.createElement(s);fjs=d.getElementsByTagName(s)[0]; js.src='https://apis.google.com/js/platform.js'; fjs.parentNode.insertBefore(js,fjs);js.onload=function(){g.load('analytics')}; }(window,document,'script')); // 初始化并渲染已保存的仪表盘 gapi.analytics.ready(function() { // 先完成OAuth授权(这里用Google账号登录授权) const authInstance = gapi.auth2.getAuthInstance(); authInstance.signIn().then(() => { // 替换成你自己的仪表盘ID和GA视图ID new gapi.analytics.googleCharts.Dashboard({ container: 'ga-dashboard-container' }).embed({ reportId: '你的仪表盘ID', viewId: '你的GA视图ID' }); }); });<div id="ga-dashboard-container"></div>
方案二:iframe嵌入(简单但受限)
如果只是想快速嵌入一个已有的GA仪表盘,用GA自带的分享功能就行:
- 登录Google Analytics,打开你要展示的仪表盘,点击右上角的「分享」按钮。
- 选择「嵌入仪表板」,复制生成的iframe代码,粘贴到你的网站页面中。
不过这个方法有局限性:你的网站域名必须在GA的授权列表里,样式几乎没法自定义,而且只能展示固定的已保存仪表盘。
2. 是否可以通过PHP、API或OAuth技术在自有网站中展示Google Analytics仪表盘对象?
当然可以!而且有几种不同的实现思路,适配不同场景:
思路一:PHP + OAuth + Google Analytics Embed API
这种方式用PHP处理OAuth的服务器端逻辑,避免前端处理复杂的授权流程,适合两种场景:
- 展示自己网站的GA数据:用服务账号(Service Account)授权,PHP通过服务账号获取访问令牌,再传递给前端的Embed API,用户不需要登录就能查看数据。
- 让用户查看自己的GA数据:用OAuth 2.0授权码流程,PHP处理授权请求、获取访问令牌和刷新令牌,前端用这些令牌调用Embed API。
PHP端服务账号授权的示例(需要先安装Google Client库):
require_once 'vendor/autoload.php'; $client = new Google\Client(); $client->setApplicationName('自定义GA仪表盘'); $client->setScopes([Google\Service\Analytics::ANALYTICS_READONLY]); // 替换成你从Cloud Console下载的服务账号密钥文件 $client->setAuthConfig('service-account-key.json'); $client->setAccessType('offline'); // 获取访问令牌 $token = $client->fetchAccessTokenWithAssertion(); $client->setAccessToken($token); // 将令牌传递给前端(比如通过JSON输出) echo json_encode(['access_token' => $token['access_token']]);
前端拿到令牌后,就可以直接初始化Embed API渲染数据,不需要用户登录。
思路二:PHP + Google Analytics Data API(自定义渲染仪表盘)
如果需要完全自定义仪表盘的样式和交互,可以用PHP调用GA的官方API(GA4用Google Analytics Data API,UA用Core Reporting API)获取原始数据,然后用Chart.js、Highcharts等前端图表库自己绘制仪表盘:
- 用PHP的Google Client库调用API,获取页面浏览量、用户数等指标数据。
- 将数据传递给前端,用图表库生成可视化报表,完全掌控样式和布局。
这种方式工作量大,但灵活性最高,适合需要深度定制的场景。
思路三:前端直接用OAuth授权
如果不想用PHP做中间层,也可以直接在前端处理OAuth授权,调用Embed API或Data API,但这种方式安全性稍弱,适合简单的小型应用。
内容的提问来源于stack exchange,提问作者Parveen Chauhan
相关产品推荐
相关产品推荐

