我想从 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 收到两个令牌(一个在查询中,另一个作为标头(,他们会使用标头中的一个,所以我未经身份验证。