首页 > 解决方案 > java.io.IOException:无法创建目录:/tokens Google Sheet API

问题描述

我终于按照 google sheet quickstart 完成了示例应用程序。现在我想调用 API 来创建工作表,但是,错误显示:

    java.io.IOException: unable to create directory: /tokens
2020-09-19 01:27:53.967 9027-9097/com.yichuchen.phonecallreminder W/System.err:     at com.google.api.client.util.store.FileDataStoreFactory.<init>(FileDataStoreFactory.java:71)
2020-09-19 01:27:53.967 9027-9097/com.yichuchen.phonecallreminder W/System.err:     at com.yichuchen.phonecallreminder.SheetsQuickstart.getCredentials(SheetsQuickstart.java:58)

这是这部分代码无法创建目录:

 GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
            .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
            .setAccessType("offline")
            .build();

我尝试过: Android 在使用谷歌日历 api 时给 IOException 提供“无法创建目录:/tokens”

但显示错误:

package android.os does not exist
import android.os.Environment;

添加了询问用户。 在此处输入图像描述

permission.READ_EXTERNAL_STORAGE, 
permission.WRITE_EXTERNAL_STORAGE

这是我调用 quickstart.class 的函数

public void createSheet() throws GeneralSecurityException, IOException {
    SheetsQuickstart sheetsQuickstart = new SheetsQuickstart();
    Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, sheetsQuickstart.getCredentials(HTTP_TRANSPORT))
            .setApplicationName("PhoneCallReminder")
            .build();
        Spreadsheet spreadsheet = new Spreadsheet()
                .setProperties(new SpreadsheetProperties()
                        .setTitle("Test"));
        spreadsheet = service.spreadsheets().create(spreadsheet)
                .setFields("spreadsheetId")
                .execute();
        System.out.println("Spreadsheet ID: " + spreadsheet.getSpreadsheetId());
}

这是我的项目和应用程序结构,在sheetquickstart.java应用程序之外,对吗?我package com.yichuchen.phonecallreminder;在第一行输入了我的应用程序可以调用的类。 在此处输入图像描述

提前致谢。

标签: javaandroidgoogle-apiioexceptioncreate-directory

解决方案


推荐阅读