не удается загрузить GoogleClientSecrets

 
 
 
Сообщения:16
надо поключиться к гугл таблицам. с этого видео взял код. но всегда при подключении
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance()

вылетает
Connected to the target VM, address: '127.0.0.1:56994', transport: 'socket'
Exception in thread "main" java.lang.NullPointerException
	at java.io.Reader.<init>(Reader.java:78)
	at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
	at Googlesheads.authorize(Googlesheads.java:36)
	at Googlesheads.getSheetsService(Googlesheads.java:57)
	at Googlesheads.main(Googlesheads.java:66)


подскажите в какую сторону жевать.



import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.Arrays;
import java.util.List;


import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
import com.google.api.services.sheets.v4.Sheets;
import com.google.api.services.sheets.v4.SheetsScopes;
import com.google.api.services.sheets.v4.model.ValueRange;

public class Googlesheads {
    private  static  Sheets sheetsService;
    private static String APPLICATION_NAME = "Google Sheets Example";
    private static String SPREADSHEET_ID = "1awTZZGGbmdlwDIy1v1ED07kodq0UwgacFSLnRJrbQdU";

    private static Credential authorize() throws IOException, GeneralSecurityException
    {

        InputStream in =  Googlesheads.class.getResourceAsStream("C:/Users/pycha/IdeaProjects/googlesheads/src/main/resourses/credentials.json");
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(),
                new InputStreamReader(in));

        List<String> scopes = Arrays.asList(SheetsScopes.SPREADSHEETS);

        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),JacksonFactory.getDefaultInstance(),
                clientSecrets,scopes).
                setDataStoreFactory(new FileDataStoreFactory(new  java.io.File( "tokens"))).
                setAccessType("offline").
                build();

        Credential credential = new  AuthorizationCodeInstalledApp(
                flow,new LocalServerReceiver()).authorize("user");

        return  credential;

    }

    public static Sheets getSheetsService()throws IOException,GeneralSecurityException
    {
        Credential credential = authorize();
        return  new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(),
                JacksonFactory.getDefaultInstance(),credential).
                setApplicationName(APPLICATION_NAME).
                build();
    }

    public static void main(String [] args) throws IOException,GeneralSecurityException
    {
        sheetsService = getSheetsService();
        String range ="congess!A2:F10";

        ValueRange response = sheetsService.spreadsheets().values()
                .get(SPREADSHEET_ID,range)
                .execute();

        List<List<Object>> values = response.getValues();

        if (values == null|| values.isEmpty()) {
            System.out.println("no data found");
        }else {
            for(List row : values){
                System.out.printf("%s %s from %s\n",row.get(5),row.get(4),row.get(1));
            }
        }
    }

}
Изменен:17 фев 2020 09:25
 
 
Сообщения:16
разобрался то в InputStream in = Googlesheads.class.getResourceAsStream(PatchJson); присваивается null, но не понимаю почему. спецом добавил файлрайдер и он считывает файл нормально, без ошибок, а getResourceAsStream не хочет. Почему?
        FileReader fr = new FileReader( PatchJson );
        Scanner scanner = new Scanner(fr);
        String str= "" ;
        while (scanner.hasNextLine())
            str+= scanner.nextLine();
        fr.close();

        InputStream in =  Googlesheads.class.getResourceAsStream(PatchJson);
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(),
                new InputStreamReader(in));
 
 
Сообщения:16
до конца не разобрался, но вопрос решился методом тыка. сделал заново проэкт, только поставил галочку при создании проэкта " создавать папки автоматически" . видимо где-то папка ресурсов не была прописана в проэкте.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет