Node.js:Google Analytics userDeletionAPI "Field id.type is required."

Node.js: Google Analytics userDeletionAPI "Field id.type is required."

我正在尝试向 node.js 中的 Google Analytics userDeletionAPI 发送用户删除请求。我正在使用 node.js 客户端:https://github.com/google/google-api-nodejs-client/

我的代码如下所示:

'use strict';

require('dotenv').config()

const {google} = require('googleapis')
const scopes = 'https://www.googleapis.com/auth/analytics.user.deletion'
const jwt = new google.auth.JWT(process.env.CLIENT_EMAIL, null, process.env.PRIVATE_KEY.replace(/\n/g, '\n'), scopes)

const analytics = google.analytics({
  version: 'v3',
  auth: jwt
})

async function deleteUser() {

  const res = await analytics.userDeletion.userDeletionRequest.upsert({
    'kind': 'analytics#userDeletionRequest',
    'id': {
      'type': 'CLIENT_ID',
      'userId': '555'
    },
      'webPropertyId': 'xxxxxxxxxx'
    },
    (err, result) => {
      console.log(err, result)
    }
  )
}

deleteUser()

我得到的错误响应如下所示: "Error: Field id.type is required."

errors:
   [ { domain: 'global',
       reason: 'required',
       message: 'Field id.type is required.' } ]

这可能是一些非常愚蠢的问题,但我不明白为什么它说 id.type 是必需的。我应该如何更改请求以使其工作?

我对 node.js 客户端一无所知。但我的猜测是您需要将请求包装在 requestBody 中。这些值在 post 正文中发送,而不是在 URL 参数中发送。所以像这样:

const res = await analytics.userDeletion.userDeletionRequest.upsert({
  'requestBody': {
    'kind': 'analytics#userDeletionRequest',
    'id': {
      'type': 'CLIENT_ID',
      'userId': '555'
    },
      'webPropertyId': 'xxxxxxxxxx'
    },
  },
  (err, result) => {
    console.log(err, result)
  }
)

希望有用。