2017-12-24 15 views
0

Googleカレンダーに予定を挿入できるアプリを作成しようとしています。情報がhttps://developers.google.com/google-apps/calendar/quickstart/javaに与えられた後、私はクイックスタートクラスを追加し、私のmainactivtyからそれを呼び出しました。以下は私のクイックスタートクラスです。私は既にOAuthで作成されたプロジェクトを持っていたので、私は同じものを使用しました。しかし、今私はアプリにアクセスしている間エラーが表示されます。GoogleカレンダーAPI認証の問題

クイックスタートクラス:クイックスタートで

public class QuickStart { 
    /** 
    * Application name. 
    */ 
    private static final String APPLICATION_NAME = 
      "mycalapp"; 

    /** 
    * Directory to store user credentials for this application. 
    */ 
    private static final java.io.File DATA_STORE_DIR = new java.io.File(
      System.getProperty("user.home"), ".credentials/calendar-java-quickstart"); 

    /** 
    * Global instance of the {@link FileDataStoreFactory}. 
    */ 
    private static FileDataStoreFactory DATA_STORE_FACTORY; 

    /** 
    * Global instance of the JSON factory. 
    */ 
    private static final JsonFactory JSON_FACTORY = 
      JacksonFactory.getDefaultInstance(); 

    /** 
    * Global instance of the HTTP transport. 
    */ 
    private static HttpTransport HTTP_TRANSPORT; 

    /** 
    * Global instance of the scopes required by this quickstart. 
    * <p> 
    * If modifying these scopes, delete your previously saved credentials 
    * at ~/.credentials/calendar-java-quickstart 
    */ 
    private static final List<String> SCOPES = 
      Arrays.asList(CalendarScopes.CALENDAR_READONLY); 

    static { 
     try { 
      HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); 
      DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR); 
     } catch (Throwable t) { 
      t.printStackTrace(); 
      System.exit(1); 
     } 
    } 

    /** 
    * Creates an authorized Credential object. 
    * 
    * @return an authorized Credential object. 
    * @throws IOException 
    */ 
    public static Credential authorize() throws IOException { 
     // Load client secrets. 
     InputStream in = 
       QuickStart.class.getResourceAsStream("/google-services.json"); 
     GoogleClientSecrets clientSecrets = 
       GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); 

     // Build flow and trigger user authorization request. 
     GoogleAuthorizationCodeFlow flow = 
       new GoogleAuthorizationCodeFlow.Builder(
         HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES) 
         .setDataStoreFactory(DATA_STORE_FACTORY) 
         .setAccessType("offline") 
         .build(); 
     Credential credential = new AuthorizationCodeInstalledApp(
       flow, new LocalServerReceiver()).authorize("user"); 
     System.out.println(
       "Credentials saved to " + DATA_STORE_DIR.getAbsolutePath()); 
     return credential; 
    } 

    /** 
    * Build and return an authorized Calendar client service. 
    * 
    * @return an authorized Calendar client service 
    * @throws IOException 
    */ 
    public static com.google.api.services.calendar.Calendar 
    getCalendarService() throws IOException { 
     Credential credential = authorize(); 
     return new com.google.api.services.calendar.Calendar.Builder(
       HTTP_TRANSPORT, JSON_FACTORY, credential) 
       .setApplicationName(APPLICATION_NAME) 
       .build(); 
    } 

    public static void main(String[] args) throws IOException { 
     // Build a new authorized API client service. 
     // Note: Do not confuse this class with the 
     // com.google.api.services.calendar.model.Calendar class. 
     com.google.api.services.calendar.Calendar service = 
       getCalendarService(); 

     // List the next 10 events from the primary calendar. 
     DateTime now = new DateTime(System.currentTimeMillis()); 
     Events events = service.events().list("primary") 
       .setMaxResults(10) 
       .setTimeMin(now) 
       .setOrderBy("startTime") 
       .setSingleEvents(true) 
       .execute(); 
     List<Event> items = events.getItems(); 
     if (items.size() == 0) { 
      System.out.println("No upcoming events found."); 
     } else { 
      System.out.println("Upcoming events"); 
      for (Event event : items) { 
       DateTime start = event.getStart().getDateTime(); 
       if (start == null) { 
        start = event.getStart().getDate(); 
       } 
       System.out.printf("%s (%s)\n", event.getSummary(), start); 
      } 
     } 
    } 

} 

必要に応じて、私はちょうどアプリケーションの名前を変更しました。

は、これは私がMainactivity

すべての権限が追加され
try { 
         QuickStart.authorize(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 

からそれを呼ばれる方法であり、以下エラーログです:どこにこれを定義するにはJKSを尋ねると、なぜ

W/System.err: java.security.KeyStoreException: JKS not found 
W/System.err:  at java.security.KeyStore.getInstance(KeyStore.java:890) 
W/System.err:  at com.google.api.client.util.SecurityUtils.getJavaKeyStore(SecurityUtils.java:53) 
W/System.err:  at com.google.api.client.googleapis.GoogleUtils.getCertificateTrustStore(GoogleUtils.java:74) 
W/System.err:  at com.google.api.client.googleapis.javanet.GoogleNetHttpTransport.newTrustedTransport(GoogleNetHttpTransport.java:55) 
W/System.err:  at jss.smartapp.payremin.QuickStart.<clinit>(QuickStart.java:68) 
W/System.err:  at jss.smartapp.payremin.QuickStart.authorize(QuickStart.java:0) 

ありませんが、理解しています。これを修正するplsガイド

答えて

関連する問題