使用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到底指向哪里的请求无效?万分感谢!




