2013-11-24 161 views
6

試圖讓Google Drive API在node-webkit中工作。Node-webkit和谷歌驅動器API

發送認證消息時,會發送一個被拒絕的文件來源://。

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 

不知道它爲什麼從gapi發送 - 誰知道如何auth從node-webkit的谷歌驅動器?

+0

我的猜測是,GAPI沒有與節點寫入作爲用例。我的簡短建議是不要使用它。你知道URL需要看起來像什麼,所以直接調用它並解析JSON響應。 – pinoyyid

+0

我接受了您的建議 - 實施REST桌面解決方案非常簡單。 – ed4becky

回答

4

我選擇繞過oAuth的API並自己做。

用戶必須複製身份驗證碼並將其粘貼到我的應用程序中,而不是第一次選擇,但他們只需執行一次操作,並且最好選擇(缺少)其他選項。

對於那些有興趣共享代碼:

當用戶選擇谷歌驅動器:

  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'); 

這將產生讓我們讓他們,併爲其授權碼的彈出。

當AUTH代碼粘貼到我的應用程序,我將它保存到數據庫,並得到一個訪問代碼,然後我保存到數據庫進行:

  $.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(); 
       } 
      });