You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Google Ads API(测试账号)无法列出可访问客户的问题求助

大家好,我现在在Node.js环境里对接Google Ads API,OAuth2授权环节明明走通了,但调用listAccessibleCustomers方法时直接卡壳,最后一条日志完全打不出来,还报了一堆gRPC相关的错误,实在摸不着头脑,想请各位帮忙排查下问题😭

核心代码片段:

const { clientId, userId } = JSON.parse(state);
const oauth2Client = new google.auth.OAuth2(
  GOOGLE_CLIENT_ID.value(),
  GOOGLE_CLIENT_SECRET.value(),
  REDIRECT_URI.value()
);
const { tokens } = await oauth2Client.getToken(code);
console.log("OAuth Tokens: ", tokens);

const adsApi = new GoogleAdsApi({
  client_id: GOOGLE_CLIENT_ID.value(),
  client_secret: GOOGLE_CLIENT_SECRET.value(),
  developer_token: GOOGLE_ADS_DEVELOPER_TOKEN.value(),
  refresh_token: tokens.refresh_token,
});
console.log("Google Ads API initialized: ", adsApi);

// 就是这行调用触发了错误
const accessibleResourceNames = await adsApi.listAccessibleCustomers({
  refresh_token: tokens.refresh_token,
});
console.log("Accessible Resource Names: ", accessibleResourceNames);

完整报错信息:

Error: 2 UNKNOWN: Getting metadata from plugin failed with error: invalid_request
at callErrorFromStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call.js:32:19)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:193:76)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:367:141)
at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:327:181)
at /workspace/node_modules/@grpc/grpc-js/build/src/resolving-call.js:135:78
at process.processTicksAndRejections (node:internal/process/task_queues:85:11)
for call at at ServiceClientImpl.makeUnaryRequest (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:161:32)
at ServiceClientImpl. (/workspace/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)
at /workspace/node_modules/google-ads-node/build/src/v21/customer_service_client.js:379:29
at /workspace/node_modules/google-ads-node/node_modules/google-gax/build/src/normalCalls/timeout.js:44:16
at repeat (/workspace/node_modules/google-ads-node/node_modules/google-gax/build/src/normalCalls/retries.js:114:25)
at /workspace/node_modules/google-ads-node/node_modules/google-gax/build/src/normalCalls/retries.js:156:13
at OngoingCallPromise.call (/workspace/node_modules/google-ads-node/node_modules/google-gax/build/src/call.js:70:27)
at NormalApiCaller.call (/workspace/node_modules/google-ads-node/node_modules/google-gax/build/src/normalCalls/normalApiCaller.js:34:19)
at /workspace/node_modules/google-ads-node/node_modules/google-gax/build/src/createApiCall.js:110:30
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
{
code: 2,
details: 'Getting metadata from plugin failed with error: invalid_request',
metadata: Metadata { internalRepr: Map(0) {}, opaqueData: Map(0) {}, options: {} },
note: 'Exception occurred in retry method that was not classified as transient'
}

我已经排查过的点:

  • OAuth授权环节完全正常,能拿到有效的refresh_token,日志里能看到完整的token信息
  • Client ID和Client Secret都是从Google Cloud控制台直接复制的,确认没有拼写错误
  • 关于developer_token,我试过两种值:一种是去掉横杠的MCC账号ID(比如把111-111-1111改成1111111111),另一种是Google Ads账号API页面里显示的官方开发者令牌,但两种情况都报同样的错误

有没有朋友遇到过类似的问题?或者能帮我分析下这个invalid_request到底指向哪里的请求无效?万分感谢!

火山引擎 最新活动