2016-06-13 70 views
8

我很难通过Node.js client libraryGoogle Analytics Reporting API v4进行身份验证。 我尝试了所有方法,从JWT(服务令牌:JSON & P12),API密钥和OAuth 2.0开始,但我从未成功通过身份验证。如何向Google Analytics报告API v4进行身份验证

我在我的开发人员控制台中激活了API,创建了ID并授予了我的Google Analytics(分析)属性和视图的权限。 我成功获取了授权和我的服务帐户的访问令牌,但我不知道如何使用它来验证Analytics Reporting API v4。

我被困在401错误消息的前面:“该请求没有有效的身份验证凭据”。 我尝试使用JWT模拟用户,但随后服务帐户未经授权。

如何使用Node.js客户端库和智威汤逊认证:

var google = require('googleapis.js'); 

var viewID = 'XXXXXXXXX'; // Google Analytics view ID 
var key = require('service_account.json'); // Service account 

var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/analytics.readonly'], null); 
var oauth2Client = new google.auth.OAuth2(); 

jwtClient.authorize(function(err, result) { 
    if (err) { 
    console.log('Unauthorize'); 
    console.log(err); 
    return; 
    } 

    oauth2Client.setCredentials({ 
    access_token: result.access_token 
    }); 

    //Need to authenticate somewhere near here 
    var analytics = google.analyticsreporting('v4'); 
    //Or here 

    var req = { 
    reportRequests: [ 
     { 
     viewId: viewID, 
     dateRanges: [ 
      { 
      startDate: '2016-05-01', 
      endDate: '2016-06-30', 
      },], 
     metrics: [ 
      { 
      expression: 'ga:users', 
      }, { 
      expression: 'ga:sessions', 
      },], 
     },], 
    }; 

    //Maybe here 
    analytics.reports.batchGet(req, 
    function(err, response) { 
     if (err) { 
     console.log('Fail'); 
     console.log(err); 
     return; 
     } 
     console.log('Success'); 
     console.log(response); 
    } 
); 
}); 

上的Node.js客户端库的版本似乎已经到了指定客户端的方法,但它消失了,也许弃用。

withAuthClient(oauth2Client) 

我试图通过API调用或请求中的客户端或令牌,但没有任何作品。

google.analyticsreporting({ version: 'v4', auth: oauth2Client }); 
google.analyticsreporting({ version: 'v4', access_token: result.access_token }); 

也许这是一个noob问题,但我不知道该怎么做,我没有看到相关的分析报告谷歌的API或客户端库文档中V4认证什么,大多数的例子,我发现使用Google AnalyticsAPI v3。

如果有人设法成功地验证到Analytics(分析)报告API v4的,请帮助:/

回答

7

发现了什么我失踪:

  • 谷歌API客户端库 “选项”:

    google.options({ auth: oauth2Client }); //this one is not very optional 
    
  • 与Google Analytics Reporting API v4文档不同,使用客户端库的查询必须具有标头以指定每个请求的客户端(第anks到CVarisco谁注意到,client library documentation是不是真的准确..):

    var request ={ 
        'headers': {'Content-Type': 'application/json'}, 
        'auth': oauth2Client, 
        'resource': req, 
    }; 
    
+0

我想在.net中做同样的事情,但似乎在API v4中,没有办法使用唯一的API密钥,我错了吗? http://stackoverflow.com/questions/43685261/analytics-reporting-v4-with-api-key – Giox

+0

这可以通过http url调用完成吗? – shzyincu

0

还要注意的是,推荐的方法做身份验证与服务器端的服务帐户使用auth.getApplicationDefault。

https://developers.google.com/identity/protocols/application-default-credentials

我们建议使用应用程序的默认凭据任何 下列情形:
...略...
- 您正在访问与云项目或其他相关数据的API适用于整个应用程序而不是个人用户数据。对于涉及用户数据的调用,最好使用最终用户明确同意访问的授权流程(请参阅使用OAuth 2.0访问Google API)。

相关问题