首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“随机”用户对此配置文件没有足够的权限。来自v3的错误

“随机”用户对此配置文件没有足够的权限。来自v3的错误
EN

Stack Overflow用户
提问于 2021-10-21 16:05:22
回答 1查看 79关注 0票数 0

当我试图向v3发送请求时,我随机地收到了这个错误:

“用户对此配置文件没有足够的权限。”

从每8-10次尝试相同的请求(相同的参数、身份验证等),我只收到这个错误一次,而其他时候,我收到正确的响应在其他时间。另一个奇怪的地方是,我们正在处理许多客户端,而我只看到了少数客户的错误。

关于更多的背景,我们使用谷歌越界 NPM软件包发送我们的Google请求。

这是我要发送给API的参数:

代码语言:javascript
复制
{
  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);
            });
    })

认证:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 19:45:49

我解决了这个问题。在我的例子中,我对多个oauth2Client请求使用相同的对象,但在每个请求之前调用这些行:

代码语言:javascript
复制
oauth2Client.setCredentials(tokens);
await oauth2Client.getRequestHeaders();

这可能会改变我在发送请求参数params之前传递的令牌。

因此,换句话说,如果您同时向API发送多个请求,最好只生成令牌一次,并对所有这些请求使用相同的令牌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69665296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档