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生成的刷新令牌如果您對刷新令牌值進行硬編碼

相關問題