Google Analytics API 请求适用于失眠/邮递员,但不适用于网络应用程序



我想从 google analytics(google-analytics(中获取数据。我已经进行了 OAuth2 身份验证以获取访问令牌,当我从 Web 发出请求时,它会响应为未经授权。但是当我从邮递员那里做请求时,它工作正常。

OAuth2身份验证的实现方式类似于Google开发人员的这篇文章:https://developers.google.com/identity/protocols/OAuth2UserAgent

以下是来自网络的请求:

const bod = {
      reportRequests: [
        {
          viewId: '--MY-ID--',
          dateRanges: [
            {
              startDate: '30daysAgo',
              endDate: 'yesterday',
            },
          ],
          metrics: [
            {
              expression: '--METRIC1--',
            },
            {
              expression: '--METRIC2--',
            },
          ],
          dimensions: [
            {
              name: '--DIMENSION--',
            },
          ],
        },
      ],
    };
    var res = this.http.post('https://analyticsreporting.googleapis.com/v4/reports:batchGet?access_token=' + token, bod);

这是我从网络应用程序获得的结果

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}

解决了,我发送了两个令牌,一个在查询参数中,就像我在问题中描述的那样,另一个在请求标头中(这个用于后端的身份验证(。在请求拦截器中,我验证 URL 是否指向后端,而不是指向谷歌分析 API,在第二种情况下,我只是不添加持有者令牌。

我想如果 Google 收到两个令牌(一个在查询中,另一个作为标头(,他们会使用标头中的一个,所以我未经身份验证。

最新更新