通过 api 获取谷歌分析报告

Posted

技术标签:

【中文标题】通过 api 获取谷歌分析报告【英文标题】:get google analytics report by api 【发布时间】:2020-03-19 02:58:10 【问题描述】:

我正在制作一个像 Flippa 这样的网站来销售已建立的网站,我想像 Flippa 一样验证网站流量,我搜索了如何获取过去 12 个月的访问报告,但我做不到,我做了什么让客户点击链接

https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=814867900881-28dlacj0v68nh9suspfjlnvjgscalaql.apps.googleusercontent.com&prompt=consent&redirect_uri=http://localhost:3000/redirect&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fanalytics.readonly&state=9612

获取代码,然后使用该代码获取 access_token

POST https://accounts.google.com/o/oauth2/token 
code=4/gXCN77EWLDCO_fake_p2tvfakezOg6Mn0fakej2vA.giyP3fakejxeAeYFZr95uygvU3j0dumQI&
client_id=104608secret-secret-secret-secret.apps.googleusercontent.com&
client_secret=90V0FAKE_WkFAKExrHCZti&
redirect_uri=http://www.mywebapp.com/oauth2callback&
grant_type=authorization_code

然后我得到访问令牌


  "access_token": "ya29.Il-yBwla5jnTECDlX5rbVk_Oq4hireOUmSzeaTWW2BgYYsBCoPn6pKnQVxIUQtGc0BXblEq_2ZQ-zhrrGeL9xYYuSyd8lvRAoPBUVKUN8liBwx-w8ok2oGh2Cknql2ucew",
  "expires_in": 3600,
  "refresh_token": "1//031hXU_jNeKEECgYIARAAGAMSNwF-L9Irds9iUaPkcGDDOSHP2-8-1FKYBRW1GaBz1fLzEoDnEcNIm89k-bZzYWXAqie5Or-Fg94",
  "scope": "https://www.googleapis.com/auth/analytics.readonly",
  "token_type": "Bearer"

并且不知道我接下来要做什么以及我所做的是否正确 我需要正确的方法来获取用户 GA 报告

【问题讨论】:

【参考方案1】:

到目前为止,您所做的工作涵盖了您的身份验证流程。现在您需要调用 Analytics Reporting API 并提供您创建的访问令牌。 以下是设置您的请求的参考: https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet 还有一些关于如何请求数据的示例。

【讨论】:

【参考方案2】:

根据您拥有的系统,这可能会有所帮助。 https://developers.google.com/analytics/devguides/reporting/core/v4

本质上,您在 google 客户端中添加访问令牌,然后执行请求。

对于 node.js,我发现这个站点在 node.js 中具有特殊功能,尽管它使用 JWT。 https://flaviocopes.com/google-analytics-api-nodejs/

const  google  = require('googleapis')
const scopes = 'https://www.googleapis.com/auth/analytics.readonly'
const jwt = new google.auth.JWT(process.env.CLIENT_EMAIL, null, process.env.PRIVATE_KEY, scopes)

const view_id = 'XXXXX'

async function getData() 
  const response = await jwt.authorize()
  const result = await google.analytics('v3').data.ga.get(
    'auth': jwt,
    'ids': 'ga:' + view_id,
    'start-date': '30daysAgo',
    'end-date': 'today',
    'metrics': 'ga:pageviews'
  )

  console.dir(result)


getData()

另外,Node.js 的谷歌 API 供参考:https://www.npmjs.com/package/googleapis

它包含如何将访问令牌设置为 oauth2Client 并在 API 中使用这些令牌。

希望这会有所帮助:)

【讨论】:

我收到“消息”:“用户对此配置文件没有足够的权限。”, 您是否可以在控制台的分析设置中允许它。我见过一些类似的问题,他们的解决方案是使用 VIEW id。 ***.com/questions/14525565/…

以上是关于通过 api 获取谷歌分析报告的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 bigQuery 从谷歌分析中有效地获取价格和 ID

谷歌插件开发获取当前网站COOKIE并上报HTTP-API

谷歌玩开发者控制台崩溃报告

如何为客户端设置谷歌分析 API?

谷歌分析核心报告 API;或使用自定义维度过滤

谷歌分析管理 API 最终版本