2015-08-30 82 views
4

我已經搜索了很多關於如何使用電子表格鍵但沒有成功的網站。我可以檢索它,獲取我想要的所有數據,但是我無法追加新行。有沒有辦法在沒有OAuth的情況下在Google Spreadsheet上添加一行使用java?

我已經將我的電子表格發佈到網絡並公開,但我一直在收到「com.google.gdata.util.ServiceException:方法不允許」。

那怎麼我試圖做到這一點:

SpreadsheetService service = 
      new SpreadsheetService("MySpreadsheetIntegration-v1"); 

     try { 

     URL url = FeedURLFactory.getDefault().getWorksheetFeedUrl(SpreadsheetRequest.KEY, "public", "full"); //KEY = "1cenwTRlrGMzMTufkK27IIgAHvEGwVKR9Yr59Qako3u0"; 

     WorksheetFeed worksheetFeed = service.getFeed(url, WorksheetFeed.class); 
     List<WorksheetEntry> worksheets = worksheetFeed.getEntries(); 
     WorksheetEntry worksheet = worksheets.get(0); 

     URL listFeedUrl = worksheet.getListFeedUrl(); 

     ListFeed listFeed = service.getFeed(listFeedUrl, ListFeed.class); 
     List<ListEntry> list = listFeed.getEntries(); 

     //Checking all the entries, works like a charm 
     for (ListEntry row : list) { 
      Log.i("INSERT",row.getTitle().getPlainText() + "\t" 
        + row.getPlainTextContent()); 
     } 

     ListEntry row = new ListEntry(); 

     row.getCustomElements().setValueLocal("id", "21"); 
     row.getCustomElements().setValueLocal("type", si.getType().toString()); 
     row.getCustomElements().setValueLocal("longitude", String.valueOf(si.getLongitude())); 
     row.getCustomElements().setValueLocal("latitude", String.valueOf(si.getLatitude())); 
     row.getCustomElements().setValueLocal("last_maint", String.valueOf(si.getLast())); 
     row.getCustomElements().setValueLocal("inst_date", String.valueOf(si.getInst())); 

     row = service.insert(listFeedUrl, row); //Exception is thrown here 

     return true; 
    } 

回答

1

答案是否定的OAuth令牌就象是一把鑰匙,它允許谷歌以確定誰是閱讀或者是誰寫的電子表格,並贏得了」如果您沒有正確的訪問級別,則允許。即使您使用瀏覽器打開Goog​​le電子表格,瀏覽器也會從Google身份提供商生成OAuth令牌,並使用該令牌檢查您的訪問級別。

更新在這裏,如果你看到我的瀏覽器如何處理對谷歌電子表格的請求,它將首先重定向到身份提供商。大多數情況下,你需要模擬它才能工作。

enter image description here

+0

我覺得奇怪的事情是,我可以在不使用OAuth的情況下訪問和檢索電子表格中的數據(僅使用電子表格密鑰),上面的代碼證明了它! 根據@MirrorTowers這裏,這是可能做到我想要的,但他沒有解釋如何(他說這可能在評論中)。 他錯了嗎?還是我錯過了什麼? –

+0

此電子表格的共享狀態如何? – Eranda

+0

互聯網上的任何人都可以編輯:https://docs.google.com/spreadsheets/d/1cenwTRlrGMzMTufkK27IIgAHvEGwVKR9Yr59Qako3u0/edit –

0

沒有辦法,你可以訪問或操縱谷歌雲端硬盤API不OAuth2.0的。另外,Google Drive API甚至無法在專用網絡上運行。

幸運的是,OAUTH2.0是強制性的!

這是電子表格----->的OAuth2.0的Java代碼

  1. OAUTH2.0-Java

  2. Android oauth2.0

相關問題