Node.js:Google Analytics(分析)userDeletionAPI“字段id.type为必填。”

时间:2018-07-13 10:05:34

标签: node.js google-analytics google-analytics-api

我正在尝试将用户删除请求发送到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()

我收到的错误提示如下: “错误:字段id.type为必填。”

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

这可能是一个非常愚蠢的问题,但是我不知道为什么要说id.type是必需的。我应该如何更改请求才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

我对node.js客户端一无所知。但是我的猜测是您需要将请求包装在requestBody中。这些值在帖子正文中发送,而不在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)
  }
)

我希望那行得通。