Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中管理多个Google帐户中的日历_Java_Google Calendar Api - Fatal编程技术网

如何在Java中管理多个Google帐户中的日历

如何在Java中管理多个Google帐户中的日历,java,google-calendar-api,Java,Google Calendar Api,在遵循中的指导之后,我已经成功地读取、插入或删除了一个或多个属于单个google帐户的google日历中的事件。现在,我想对使用该方法的多个帐户执行相同的操作 下面是一些更多信息的情况。 在本例中,我在GoogleDevelopers控制台中创建了一个项目,并打开了API。然后,我创建了OAuth 2.0客户端ID,通过同意屏幕对用户进行身份验证 然后,我尝试使用下载的客户端机密JSON连接日历。在本例中,我得到了一个URL来显示同意屏幕并获得如下所述的用户身份验证。 一切进展顺利,我可以成功

在遵循中的指导之后,我已经成功地读取、插入或删除了一个或多个属于单个google帐户的google日历中的事件。现在,我想对使用该方法的多个帐户执行相同的操作

下面是一些更多信息的情况。 在本例中,我在GoogleDevelopers控制台中创建了一个项目,并打开了API。然后,我创建了
OAuth 2.0客户端ID
,通过同意屏幕对用户进行身份验证

然后,我尝试使用下载的客户端机密JSON连接日历。在本例中,我得到了一个URL来显示同意屏幕并获得如下所述的用户身份验证。

一切进展顺利,我可以成功地读取、插入或删除一个或多个谷歌日历上的事件,这些日历属于谷歌帐户(最初经过身份验证)

现在,我想访问一些其他谷歌帐户,并管理他们的日历以及。在本例中,对于其他帐户,我也通过URL获得了成功的验证代码,以显示下面提到的同意屏幕


收到验证码。您现在可以关闭此窗口

但我不知道如何使用Java程序来管理这些属于不同谷歌账户的Ca贷款人。它持续管理第一个已验证帐户的日历

如何做到这一点?基本上,如何使用上述developers.google.com指南中提到的方法,通过java管理多个google帐户中的日历

代码:

private static void viewEvents() throws IOException {

        com.google.api.services.calendar.Calendar service = getCalendarService();

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

    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 Credential authorize() throws IOException {

        InputStream in = CalendarQuickstart.class.getResourceAsStream("/client_secret_1.0.0.json");
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
                                                                                .setDataStoreFactory(DATA_STORE_FACTORY)
                                                                                .setAccessType("online")
                                                                                .build();

        Credential credential = null;
        try {credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");} catch (Exception e) {}

        System.out.println("Credentials saved to " + DATA_STORE_DIR.getAbsolutePath());

        return credential;
    }
private static void viewEvents()引发IOException{
com.google.api.services.calendar.calendar服务=getCalendarService();
DateTime now=新的日期时间(System.currentTimeMillis());
事件=service.Events().list(“主”)
.setMaxResults(10)
.setTimeMin(现在)
.setOrderBy(“startTime”)
.setSingleEvents(真)
.execute();
List items=events.getItems();
如果(items.size()==0){
System.out.println(“未找到即将发生的事件”);
}否则{
System.out.println(“即将发生的事件”);
对于(事件:项){
DateTime start=event.getStart().getDateTime();
if(start==null){
start=event.getStart().getDate();
}
System.out.printf(“%s(%s)\n”,event.getSummary(),start);
}     
}
}
public static com.google.api.services.calendar.calendar getCalendarService()引发IOException{
凭证=授权();
返回新的com.google.api.services.calendar.calendar.Builder(HTTP_传输、JSON_工厂、凭证)
.setApplicationName(应用程序名称)
.build();
}
公共静态凭据授权()引发IOException{
InputStream in=CalendarQuickstart.class.getResourceAsStream(“/client\u secret\u 1.0.0.json”);
GoogleClientSecrets clientSecrets=GoogleClientSecrets.load(JSON_工厂,新的InputStreamReader(in));
GoogleAuthorizationCodeFlow=新的GoogleAuthorizationCodeFlow.Builder(HTTP_传输、JSON_工厂、clientSecrets、作用域)
.setDataStoreFactory(数据存储工厂)
.setAccessType(“在线”)
.build();
凭证=空;
请尝试{credential=new AuthorizationCodeInstalledApp(flow,new LocalServerReceiver()).authorization(“user”);}catch(异常e){}
System.out.println(“凭证保存到”+DATA\u STORE\u DIR.getAbsolutePath());
返回凭证;
}

我自己用另一种方式找到了答案

Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
我们可以使用
authorize()
方法的字符串参数来实现这一点。(例如:“用户”)

假设您希望在两个帐户中管理日历namal@gmail.com及lakmini@gmail.com,

  • 执行赋予参数“namal”的
    autherize()
    方法。然后,您将获得同意屏幕的URL
  • 使用namal@gmail.com账户它将存储的凭据namal@gmail.com反对“namal”键
  • 执行赋予参数“lakmini”的
    authorize()
    方法。然后,您将获得同意屏幕的URL
  • 从服务器注销namal@gmail.com或将URL发送到已记录为“”的浏览器lakmini@gmail.com“
  • 使用lakmini@gmail.com账户它将存储的凭据lakmini@gmail.com按“lakmini”键
  • 现在,当您使用“namal”键时,您将连接到日历,以便namal@gmail.com. 当您使用“lakmini”键时,您将连接到日历,以便lakmini@gmail.com.