You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud Functions调用Analytics用户删除API报401如何解决

401错误是因为你发送给Google Analytics API的请求没有携带有效的OAuth2访问令牌。你之前创建的网页类型OAuth客户端不适用于云函数这种无用户交互的服务端场景,应该使用云函数自带的服务账号完成身份验证,操作步骤如下:

  • 第一步:给云函数服务账号授权GA权限
    找到你的云函数使用的运行时服务账号,默认是[你的GCP项目ID]@appspot.gserviceaccount.com,你可以在云函数详情页的「运行时、构建、连接设置」标签下找到对应账号。进入Google Analytics管理后台,在对应的媒体资源的「账号访问权限管理」中,给该服务账号授予编辑权限。

  • 第二步:修改云函数代码,自动获取访问令牌
    首先在云函数的package.json依赖中添加官方认证库,执行安装命令:
    npm install google-auth-library

修改后的代码参考:

const { GoogleAuth } = require('google-auth-library');
const request = require('request');

// 初始化认证实例,指定GA用户删除API需要的权限范围
const auth = new GoogleAuth({
  scopes: 'https://www.googleapis.com/auth/analytics.user.deletion'
});

async function deleteGArecord(userObject) {
  // 自动获取当前服务账号的访问令牌,无需手动上传密钥
  const client = await auth.getClient();
  const accessToken = await client.getAccessToken();

  const options = {
    method: "POST",
    url: "https://www.googleapis.com/analytics/v3/userDeletion/userDeletionRequests:upsert",
    headers: {
      "Content-Type": "application/json",
      // 把令牌添加到请求头完成身份校验
      "Authorization": `Bearer ${accessToken.token}`
    },
    body: JSON.stringify({
      kind: "analytics#userDeletionRequest",
      id: {
        type: "CLIENT_ID",
        userId: userObject.clientId,
      },
      webPropertyId: "UA-111111-000", // 替换为你真实的UA媒体资源ID
    }),
  };
  request(options, function (error, response) {
    if (error) {
      console.log(error);
    }
    console.log("ga user delete request:" + JSON.stringify(response));
  });
}

如果修改后仍有权限报错,可检查云函数的运行时服务账号是否被授予了正确的GA权限,以及填写的webPropertyId是否和你授权的媒体资源ID匹配。

内容的提问来源于stack exchange,提问作者Caio César P. Ricciuti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:09:00