当我试图向v3发送请求时,我随机地收到了这个错误:
“用户对此配置文件没有足够的权限。”
从每8-10次尝试相同的请求(相同的参数、身份验证等),我只收到这个错误一次,而其他时候,我收到正确的响应在其他时间。另一个奇怪的地方是,我们正在处理许多客户端,而我只看到了少数客户的错误。
关于更多的背景,我们使用谷歌越界 NPM软件包发送我们的Google请求。
这是我要发送给API的参数:
{
params: {
auth: OAuth2Client {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
transporter: DefaultTransporter {},
credentials: [Object],
eagerRefreshThresholdMillis: 300000,
forceRefreshOnFailure: false,
certificateCache: {},
certificateExpiry: null,
certificateCacheFormat: 'PEM',
refreshTokenPromises: Map {},
_clientId: 'XXXXX,
_clientSecret: 'XXXX',
redirectUri: 'postmessage'
},
ids: 'ga:XXXX',
metrics: 'ga:sessions,ga:bounces,ga:transactions,ga:transactionRevenue,ga:goalCompletionsAll',
dimensions: 'ga:date',
'start-date': '2021-10-01',
'end-date': '2021-10-20',
samplingLevel: 'HIGHER_PRECISION',
quotaUser: 'XXX'
}
}
new Promise((resolve, reject) => {
return google
.analytics({ version: "v3"})
.data.ga.get(params, (error, { data: response } = {}) => {
if (error) {
return reject(new Error(`Google API sent the following error: ${error}`));
}
return resolve(response);
});
})认证:
const OAuth2 = google.auth.OAuth2;
const oauth2Client = new OAuth2(process.env.GOOGLE_CLIENT_ID, process.env.GOOGLE_CLIENT_SECRET, "postmessage");
oauth2Client.setCredentials(tokens);
await oauth2Client.getRequestHeaders().catch((error) => {
throw error;
});然后在params中以auth的形式传递auth。
发布于 2021-10-21 19:45:49
我解决了这个问题。在我的例子中,我对多个oauth2Client请求使用相同的对象,但在每个请求之前调用这些行:
oauth2Client.setCredentials(tokens);
await oauth2Client.getRequestHeaders();这可能会改变我在发送请求参数params之前传递的令牌。
因此,换句话说,如果您同时向API发送多个请求,最好只生成令牌一次,并对所有这些请求使用相同的令牌。
https://stackoverflow.com/questions/69665296
复制相似问题