【问题标题】:Service account : Google Analytics v4 : Error User does not have any Google Analytics account服务帐户:Google Analytics v4:错误用户没有任何 Google Analytics 帐户
【发布时间】:2021-01-05 20:47:16
【问题描述】:

我正在尝试在firebase中添加功能以获取用户的分析数据。

code: 403,
>    errors: [
>      {
>        message: 'User does not have any Google Analytics account.',
>        domain: 'global',
>        reason: 'forbidden'
>      }
>    ]

当我在命令提示符下运行它时出现此错误。不知道我在哪里做错了。我得到了访问令牌,但错误是由reports.batchGet 代码生成的。

import * as functions from 'firebase-functions';

const gClientEmail = functions.config().google.client_email
const gPrivateKey = functions.config().google.private_key.replace(/\\n/g, '\n')

const { google } = require('googleapis');

const jwtClient = new google.auth.JWT(gClientEmail, null, gPrivateKey, 'https://www.googleapis.com/auth/analytics.readonly', '');

const oauth2Client = new google.auth.OAuth2();

google.options({ auth: oauth2Client });

exports.init = functions.https.onRequest((request, response) => {

  jwtClient.authorize((err:any, tokens:any) => {
        if (err) {
            throw (err);
        }

        oauth2Client.setCredentials({
            access_token: tokens.access_token
        });

        var analytics = google.analyticsreporting('v4');

        var req = {
            reportRequests: [
                {
                    viewId: VIEWID, 
                    dateRanges: [
                        {
                            startDate: "10daysAgo",
                            endDate: "today",
                        },
                    ],
                    metrics: [
                        {
                            expression: "ga:users",
                        },
                    ],
                    dimensions: [
                        {
                            name: "ga:date",
                        },
                    ],
                }
            ],
        };

        analytics.reports.batchGet({
            'auth': jwtClient,
                'resource': req,
            },
            function(err:any, response:any) {
                if (err) {
                    console.log(err);
                    return;
                }
                console.log(response);
            }
        );
    });
});

我有一个解决方案,他们说在分析仪表板中将gClientEmail 添加到每个站点的用户。我不想这样做。

【问题讨论】:

    标签: node.js firebase google-analytics google-cloud-functions service-accounts


    【解决方案1】:

    如果您的帐户中只有 Google Analytics(分析)4 媒体资源,则无法使用 Google Analytics Reporting API,因为只能使用 Universal Analytics 媒体资源。

    API v4 不是 GA4 的 API

    对于 GA4 API,您必须使用 Analytics Data API:https://developers.google.com/analytics/devguides/reporting/data/v1

    【讨论】:

      猜你喜欢
      • 2013-05-01
      • 1970-01-01
      • 2012-09-30
      • 2013-12-08
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 2022-10-19
      • 2012-03-11
      相关资源
      最近更新 更多