Is there a way to add a row on a Google Spreadsheet without OAuth using java?

喜欢而已 提交于 2019-12-10 17:24:55

问题


I've searched a lot of websites about how to do that using only the spreadsheet key, but with no success. I can retrieve it, get all the data I want, but I can't append a new row to it.

I've already published my spreadsheet to the web and made it public but I keep getting " com.google.gdata.util.ServiceException: Method Not Allowed".

That's how I'm trying to do it:

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:


Answer is No. OAuth token is like a key which allows Google to identify who is reading or who is writing to the spreadsheet and it won't allow if you don't have the correct access level. Even when you open Google spreadsheet with your browser the browser will generate an OAuth token from the Google identity provider and use that token to check whether your access level.

Update Here if you see how my browser handle the request done to the google spread sheet it will first redirect to the identity provider. Most of the time you need to simulate that in order to work.




回答2:


There is no way you can access or manipulate Google Drive API without OAUTH2.0. Additionally, Google Drive API wouldn't even work on private networks.

Fortunately, OAUTH2.0 is mandatory!!

This is the OAUTH2.0 Java code for spreadsheet----->

  1. OAUTH2.0-Java

  2. Android oauth2.0



来源:https://stackoverflow.com/questions/32292399/is-there-a-way-to-add-a-row-on-a-google-spreadsheet-without-oauth-using-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!