0

我正在尝试使用youtube analytics api设置nodejs。我目前正在使用刷新令牌来尝试获取访问令牌。它在使用邮递员时效果很好,但我似乎无法在nodejs中复制功能,并获得400:invalid_request,但没有提供额外的信息。通过nodejs库获取Youtube Analytics的invalid_request

这里是我的代码

var google = require('googleapis'); 
var OAuth2 = google.auth.OAuth2; 
var oAuthClient = new OAuth2(); 

// Retrieve tokens via token exchange explained above or set them: 
oAuthClient.setCredentials({ 
    access_token: "", 
    refresh_token: process.env["YOUTUBE_ANALYTICS_REFRESHTOKEN"] 
}); 

var youtubeAnalytics = google.youtubeAnalytics({ 
    version: 'v1', auth: oAuthClient 
}); 


var moduleExports = { 
    retrieveDailyBreakdownViews : function(){ 
     var query = { 
      ids: 'channel==' + {channelID here}, 
      'start-date': '2017-05-01', 
      'end-date': '2017-05-02', 
      metrics: 'views,estimatedMinutesWatched', 
      dimensions: 'insightPlaybackLocationType', 
      sort: 'views' 
     } 
    youtubeAnalytics.reports.query(query, (error, response) => { 
    console.log(error); 
    console.log(response); 
    }); 
} 
} 

module.exports = moduleExports; 

任何想法?如果这不起作用,我可以尝试通过HTTP/REST构建查询,但我更愿意使用SDK。

回答

1

这就是我最终要解决的问题

var google = require('googleapis'); 
var googleAuth = require('google-auth-library'); 
var auth = new googleAuth(); 
var oauth2Client = new auth.OAuth2(process.env["YOUTUBE_CLIENT_ID"], 
process.env["YOUTUBE_CLIENT_SECRET"]); 
oauth2Client.credentials.refresh_token = 
process.env["YOUTUBE_ANALYTICS_REFRESHTOKEN"]; 

var youtubeAnalytics = google.youtubeAnalytics({ 
    version: 'v1' 
}); 

然后我让我的电话是这样的:

youtubeAnalytics.reports.query(query, (error, response) => {}) 
1

为了能够刷新访问令牌,您还需要client_idclient_secret。这是怎么回事引擎盖下是以下请求刷新令牌(引用here):

POST https://accounts.google.com/o/oauth2/token 
{ 
    refresh_token: refresh_token, 
    client_id: this._clientId, 
    client_secret: this._clientSecret, 
    grant_type: 'refresh_token' 
} 

你需要初始化你Oauth2客户端:

var oAuthClient = new OAuth2(
    YOUR_CLIENT_ID, 
    YOUR_CLIENT_SECRET, 
    YOUR_REDIRECT_URL 
); 

您还需要提供使用相同的client_id/client_secret生成的刷新令牌如果您对刷新令牌值进行硬编码

相关问题