2013-11-24 23 views
6

Cercando di far funzionare l'API di Google Drive in node-webkit.Node-webkit e google drive api

Quando viene inviato il messaggio di autorizzazione, viene inviato con Origine di file: // che viene rifiutato.

https://accounts.google.com/o/oauth2/auth 
?client_id=<some value> 
&scope=https://www.googleapis.com/auth/drive.appdata 
https://www.googleapis.com/auth/drive.file 
https://www.googleapis.com/auth/drive 
&immediate=true 
&proxy=oauth2relay1232990068 
&redirect_uri=postmessage 
&origin=file:// 
&response_type=token 
&state=1938150804|0.1319366391 
&authuser=0 

Non certo perché viene inviato in questo modo da GAPI - Qualcuno sa come Auth Google Drive dal nodo-webkit?

+0

La mia ipotesi è che GAPI non è stata scritta con il nodo come un caso d'uso. Il mio suggerimento breve è non usarlo. Sai come deve essere l'URL, quindi chiamalo direttamente e analizza la risposta JSON. – pinoyyid

+0

Ho seguito il tuo consiglio: è stato abbastanza semplice implementare la soluzione desktop REST. – ed4becky

risposta

4

Ho scelto di ignorare l'API per oAuth e farlo da solo.

L'utente deve copiare un codice di autenticazione e incollarlo nella mia app - non è la prima scelta, ma devono farlo solo una volta ed è preferibile alla (mancanza di) alternativa.

Condividere il codice per chi fosse interessato:

Quando l'utente sceglie guidare Google:

  window.open('https://accounts.google.com/o/oauth2/auth?' 
        + 'client_id=<some value>' 
        + '&scope=<space delimited list of permissions>' 
        + '&redirect_uri=urn:ietf:wg:oauth:2.0:oob' 
        + '&response_type=code'); 

Questo produce un pop-up che ti permette di li Consentire e presenta loro autenticazione codice.

Quando autenticazione codice viene incollato in mia app, ho salvarlo a DB e procedere con ottenere un codice di accesso, che ho poi salvare in DB:

  $.ajax({ 
       url: "https://accounts.google.com/o/oauth2/token", 
       type: 'post', 
       data: { 
        code: <authCode>, 
        client_id: CLIENT_ID, 
        client_secret: CLIENT_SECRET, 
        redirect_uri: 'urn:ietf:wg:oauth:2.0:oob', 
        grant_type: 'authorization_code' 
       } 
      }).error(function(data) { 
       myObj.isAuth = false; 
       if (cbFail) { 
        cbFail(data); 
       } 
      }).success(function(data) { 
       myObj.isAuth = true; 
       <persist entire response> 
       if (cbSuccess) { 
        cbSuccess(); 
       } 
      }); 
Problemi correlati