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