2016-05-17 1 views
2

J'utilise nodejs api google, je tente d'obtenir des données de google Anayticsjeton Actualiser de google api ne fonctionnent pas correctement dans nodejs

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)) 
}) 

Remarque Maintenant, le problème est de savoir si le jeton d'accès est de date d'expiration alors il me donne des données, et si le jeton d'accès expire alors il m'a donné 400 erreur Invalid grant. Et si je retire EXPIRY_DATE de lettres de créance alors il m'a donné l'erreur

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

Répondre

1

access_token ont le temps est expire 1 heure. Vous devez actualiser access_token lorsqu'il a expiré.

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

Pouvez-vous trouver here