google api的刷新标记在nodejs中不能正常工作

我正在使用谷歌api nodejs,我试图从谷歌Anaytics获取数据

var google = require('googleapis'); var OAuth2Client = google.auth.OAuth2; var CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; var CLIENT_SECRET = 'xxxxxxxxxxxxxxxxxxxxxx'; //var REDIRECT_URL = 'http://yieldops.co/oauth2Callback'; var REDIRECT_URL = 'http://localhost:8000/oauth2Callback'; var oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET,REDIRECT_URL); var credentials={} credentials.expiry_date= "1463514280558", credentials['refresh_token']="aaaaaaaaa" credentials['access_token']="aaaaaaaaaaaaaaa" oauth2Client.setCredentials(credentials) var gauth = { 'auth': outh2Client, 'ids': 'ga:101' , 'start-date': '2016-01-01', 'end-date': 'today', 'metrics': 'ga:impressions,ga:sessions,ga:pageviews', 'dimensions': 'ga:date' } analytics.data.ga.get(gauth, function (err, gaData) { console.log("err 1234",err) console.log("gaData ",gaData) //console.log("ga",Object.keys(gaData)) }) 

注意现在的问题是,如果访问令牌没有过期,那么它给我的数据,如果访问令牌到期,那么它给了我400错误无效的授予 。 如果我从证书中删除expiry_date然后它给了我错误

 { [Error: Invalid Credentials] code: 401, errors: [ { domain: 'global', reason: 'authError', message: 'Invalid Credentials', locationType: 'header', location: 'Authorization' } ] } 

access_token的过期时间是1小时。 过期后,必须刷新access_token。

 oauth2Client.refreshAccessToken(function(err, tokens) { // your access_token is now refreshed and stored in oauth2Client // store these new tokens in a safe place (eg database) }); 

你能在这里find吗?