有没有办法在没有使用java的OAuth的情况下在Google电子表格上添加行?

时间:2015-08-30 01:44:05

标签: java android google-sheets google-spreadsheet-api

我在很多网站上搜索了如何仅使用电子表格键进行操作,但没有成功。我可以检索它,获取我想要的所有数据,但我不能在其中附加新行。

我已经将我的电子表格发布到网上并公之于众,但我不断收到“com.google.gdata.util.ServiceException:Method Not Allowed”。

我正在尝试这样做:

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;
    }

2 个答案:

答案 0 :(得分:1)

答案是否定的.OAuth令牌就像一把钥匙,它允许Google识别谁正在阅读或谁正在写入电子表格,如果你没有正确的访问级别,它就不会允许。即使您使用浏览器打开Goog​​le电子表格,浏览器也会从Google身份提供商生成OAuth令牌,并使用该令牌检查您的访问级别。

更新此处,如果您看到我的浏览器如何处理对Google电子表格的请求,它将首先重定向到身份提供商。大多数情况下,您需要模拟它才能工作。

enter image description here

答案 1 :(得分:0)

如果没有OAUTH2.0,您无法访问或操作Google Drive API。此外,Google Drive API甚至无法在专用网络上运行。

幸运的是,OAUTH2.0是强制性的!!

这是电子表格的OAUTH2.0 Java代码-----&gt;

  1. OAUTH2.0-Java

  2. Android oauth2.0