node.js - 服务帐户:Google Analytics v4:错误用户没有任何 Google Analytics 帐户
问题描述
我正在尝试在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
在分析仪表板中添加到每个站点的用户。我不想这样做。
解决方案
如果您的帐户中只有 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
推荐阅读
- laravel - 添加修订后自动更改状态
- python-3.x - 我想从文本输入中提取第三行
- java - 尝试构建 gradle 时出错 - androidx.appcompat:appcompat:28.+
- javascript - 如何从列表javascript中删除第一项?
- angular - 将响应对象的值分配给模型对象
- javascript - 当我们使用“redux-starter-kit”时,如何访问另一个减速器中的减速器状态?
- saml-2.0 - Shibboleth 3 Idp 使用 ws-fed
- android - 无法通过我的 Android 应用程序中的蓝牙热敏打印机打印阿拉伯字符串
- python - 如何处理熊猫中的复制粘贴表-重塑列向量
- spring - 从 JPA 存储库的另一个表中选择数据