【问题标题】:How to correctly send a Google Analytics API result from server to client?如何正确地将 Google Analytics API 结果从服务器发送到客户端?
【发布时间】:2018-12-29 06:07:00
【问题描述】:

我正在尝试从 Google Analytics API 获取一些数据,到目前为止,我的功能运行良好,除了我无法将结果发送回客户端 ['res.send() ' ]

const { google } = require('googleapis')
const functions = require('firebase-functions');

const scopes = 'https://www.googleapis.com/auth/analytics.readonly'
const key = require('./auth.json')
const jwt = new google.auth.JWT(key.client_email, null, key.private_key, 
scopes)
const view_id = '######'

exports = module.exports = functions.https.onCall((req, res) => {

  jwt.authorize(req, res, (err, result) => {
    google.analytics('v3').data.ga.get(
      {
        auth: jwt,
        ids: 'ga:' + view_id,
        'start-date': '30daysAgo',
        'end-date': 'today',
        metrics: 'ga:pageviews'
      },
      (err, result) => {
        console.log(result)
        res.send(result)
      }
    )
  })

})

现在正确的结果已记录在服务器端,但我无法将其发送回客户端。预期会是“res.send()”将数据返回给客户端以在 UI 中使用。

【问题讨论】:

    标签: node.js firebase google-cloud-functions


    【解决方案1】:

    您混淆了HTTP triggerscallable triggers

    您定义的是使用functions.https.onCall 的可调用触发器,但您错误地假设它接收请求和结果参数。 callables 的文档说你得到一个数据和一个上下文对象。您还应该返回一个用您要发送的数据解析的承诺。

    看起来您打算使用functions.https.onRequest 编写一个HTTP 触发器。它接收请求和响应对象,然后您使用响应对象将数据发送回客户端。

    【讨论】:

    • 是的,我实际上在这里混淆了函数类型。非常感谢,这解决了我的问题 :) & 我找到了 GA Reporting API here 的一个很好的文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2021-02-15
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多