2013-08-21 7 views
0

J'essaie de comprendre comment l'autorisation (en particulier les jetons d'actualisation) fonctionne pour nodejs API Google Drive.Nodejs Google Drive API

Ici, il est le code de https://github.com/google/google-api-nodejs-client.

oauth2Client.credentials = { 
     access_token: 'ACCESS TOKEN HERE', 
     refresh_token: 'REFRESH TOKEN HERE' 
    }; 

    client 
     .plus.people.get({ userId: 'me' }) 
     .withAuthClient(oauth2Client) 
     .execute(callback); 

Question générale: Comment rafraîchir les jetons fonctionnent réellement avec jeton d'accès? Contexte: Comme ce que j'interprète est que chaque jeton d'accès a une durée limitée (~ 1 heure). Ainsi, lorsqu'un utilisateur se connecte FIRST à mon serveur (que le serveur fournit un mécanisme pour l'authentification de l'utilisateur), le serveur reçoit un jeton d'accès à durée de vie limitée et un jeton de rafraîchissement ONE-TIME. Après 1 heure, le jeton d'accès a expiré.

question spécifique: vient ici pour les questions clés. Après l'expiration, mon serveur envoie toujours la requête à l'API Google Drive avec le jeton d'accès EXPIRED et le jeton d'actualisation (le serveur utilise la session pour stocker ces valeurs). Sera-t-il toujours en mesure d'accéder au contenu de Google Drive? Ce que je devine est que le nodejs lib + google drive api est assez SMART pour détecter le jeton d'accès est expiré & jeton d'actualisation est identifié & api remplacer le jeton d'accès expiré avec un nouveau jeton d'accès aveuglément (comme le serveur n'a pas besoin de faire quoi que ce soit; juste google drive api). L'API répondra-t-elle au serveur avec un nouveau code d'accès?

J'ai besoin de comprendre cela parce que je dois organiser mon code dans NodeJS efficacement.

Merci!

Répondre

1

Oui.

Le client API Node.js détecte les erreurs de jeton d'accès et actualise automatiquement le jeton.

Vous pouvez voir ce in the source:

var hasAuthError = res.statusCode == 401 || res.statusCode == 403; 
// if there is an auth error, refresh the token 
// and make the request again 
if (!opt_dontForceRefresh && hasAuthError && credentials.refresh_token) { 
    // refresh access token and re-request 
    that.refreshToken_(credentials.refresh_token, function(err, result) { 
    if (err) { 
     opt_callback && opt_callback(err, null, null); 
    } else { 
     var tokens = result; 
     tokens.refresh_token = credentials.refresh_token; 
     that.credentials = tokens; 
     that.request(opts, opt_callback, true); 
    } 
    }); 
} 
+0

Alors, est-ce que cela signifie que le access_token de oauth2Client.credentials sera automatiquement mis à jour ??? – user1657499