0

Chose étrange trouvé:méthode init api Google Drive modifie les données

var settings = { 
      apiKey:"[api key]", 
      client_id:"XXX-59qgl58th06ft9s160cnp28j7a3uunte.apps.googleusercontent.com", 
      discoveryDocs:["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"], 
      folder_id:"0B3vR4cBcxn4odVNTa0VjSmNab3M", 
      redirect_uris:"http://localhost:8000", 
      scope:"https://www.googleapis.com/auth/drive" 
     }; 

     console.log(settings); //checked before init 

      gapi.load('client:auth2', function(){ 
      gapi.client.init(
       settings 
      ); 
      console.log(settings); //after init 

Après gapi INIT, il modifie les paramètres de la valeur à:

client_id:"XXXX-59qgl58th06ft9s160cnp28j7a3uunte.apps.googleusercontent.com" 
cookie_policy:"single_host_origin" 
scope:"https://www.googleapis.com/auth/drive" 

ne peut pas obtenir pourquoi ?! il devrait seulement obtenir les paramètres et continuer. Merci

Répondre

0

Votre variable de paramètres est de type objet et en la passant à l'intérieur de gapi.client.init() vous la passez comme référence permettant à gapi d'accéder directement à votre variable de paramètres. Si vous souhaitez conserver votre variable de paramètres intacte, passez un clone de la même à la fonction init.

gapi.client.init(
    JSON.parse(JSON.stringify(settings)); 
); 

En effectuant JSON.stringify vous convertissez l'objet entier en chaîne et qui analyse à nouveau dans un objet, ce qui crée un clone de votre objet qui n'a plus aucune référence à votre variable.

+0

s'il accède à l'objet, il le change? Pourquoi? jamais entendu parler d'un tel comportement – aleXela

+0

Je ne vois aucune raison spécifique pour laquelle la bibliothèque modifie directement l'argument. Mais je ne suis pas très surpris de ce comportement, je ne m'attends pas non plus à ce que ce soit un objet de paramètres simple. Le clonage de l'objet l'a-t-il empêché de se modifier? –