在Java中添加没有OAuth的Google日历事件?

在Java中添加没有OAuth的Google日历事件?,java,oauth,calendar,google-calendar-api,google-api-java-client,Java,Oauth,Calendar,Google Calendar Api,Google Api Java Client,我想用Java向google日历中添加一个事件。 我不想使用基于web的OAuth。使用简单的java代码,我想添加一个事件,我使用的GoogleCalendar的身份验证是静态的。我的应用程序生成事件并发布到Google日历。 我使用以下代码创建事件并发布到日历 Event event = new Event(); event.setSummary("Appointment"); event.setLocation("Somewhere"); ArrayList<EventAtten

我想用Java向google日历中添加一个事件。 我不想使用基于web的OAuth。使用简单的java代码,我想添加一个事件,我使用的GoogleCalendar的身份验证是静态的。我的应用程序生成事件并发布到Google日历。 我使用以下代码创建事件并发布到日历

Event event = new Event();

event.setSummary("Appointment");
event.setLocation("Somewhere");

ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
attendees.add(new EventAttendee().setEmail("attendeeEmail"));
// ...
event.setAttendees(attendees);

Date startDate = new Date();
Date endDate = new Date(startDate.getTime() + 3600000);
DateTime start = new DateTime(startDate, TimeZone.getTimeZone("UTC"));
event.setStart(new EventDateTime().setDateTime(start));
DateTime end = new DateTime(endDate, TimeZone.getTimeZone("UTC"));
event.setEnd(new EventDateTime().setDateTime(end));

Event createdEvent = service.events().insert("primary", event).execute();

System.out.println(createdEvent.getId());  
Event事件=新事件();
事件摘要(“任命”);
事件。设置位置(“某处”);
ArrayList Attendes=新建ArrayList();
add(neweventAttendee().setEmail(“Attendeemail”);
// ...
事件。设置与会者(与会者);
日期开始日期=新日期();
Date endDate=新日期(startDate.getTime()+3600000);
DateTime start=新的日期时间(startDate,TimeZone.getTimeZone(“UTC”);
event.setStart(neweventdatetime().setDateTime(start));
DateTime end=newdatetime(endDate,TimeZone.getTimeZone(“UTC”);
event.setEnd(新的EventDateTime().setDateTime(end));
Event createdEvent=service.events().insert(“primary”,Event.execute();
System.out.println(createdEvent.getId());
我已经浏览了以下关于WebOAuth的链接。但我不需要这么复杂的东西

如何在此处获取服务对象??

请帮助我,如果有人知道并且高度赞赏示例代码

请首先转到Google开发者控制台,创建项目,获取服务帐户和私钥文件。 将日历共享到服务帐户电子邮件

HttpTransport TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder().setTransport(TRANSPORT)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountId(SERVICE_ACCOUNT)
            .setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR))
            .setServiceAccountPrivateKeyFromP12File(new File(key.p12))
            .build();

    service = new Calendar.Builder(TRANSPORT, JSON_FACTORY, credential)
        .build();

以下代码适用于我,服务类是

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.Collections;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.CalendarScopes;
import com.google.common.io.Files;

/**
 * @author Yaniv Inbar
 */
public class CalendarService {

  /**
   * Be sure to specify the name of your application. If the application name is {@code null} or
   * blank, the application will log a warning. Suggested format is "MyCompany-ProductName/1.0".
   */
  private static final String APPLICATION_NAME = "ServiceCalendar";

  /** E-mail address of the service account. */
  private static final String SERVICE_ACCOUNT_EMAIL = "135965950222_test@developer.gserviceaccount.com";

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

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


  public  Calendar configure() {
    try {
      try {
        httpTransport = new NetHttpTransport();
        // check for valid setup
        if (SERVICE_ACCOUNT_EMAIL.startsWith("Enter ")) {
          System.err.println(SERVICE_ACCOUNT_EMAIL);
          System.exit(1);
        }
        URL loc = this.getClass().getResource("/ServiceApp-13c8dce63281.p12"); 
        String path = loc.getPath(); 
        File file = new File(path);
        String p12Content = Files.readFirstLine(file, Charset.defaultCharset());
        if (p12Content.startsWith("Please")) {
          System.err.println(p12Content);
          System.exit(1);
        }
        // service account credential (uncomment setServiceAccountUser for domain-wide delegation)
        GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(httpTransport)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
            .setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR))
            .setServiceAccountPrivateKeyFromP12File(file)
            .build();
     Calendar   client = new com.google.api.services.calendar.Calendar.Builder(
             httpTransport, JSON_FACTORY, credential)
                .setApplicationName(APPLICATION_NAME).build();
     System.out.println("Client : "+client);
     return client;

      } catch (IOException e) {
        System.err.println(e.getMessage());
      }
    } catch (Throwable t) {
      t.printStackTrace();
    }
    System.exit(1);
    return null;
  }

}  
测试类为:

import java.util.ArrayList;
import java.util.Date;

import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventAttendee;
import com.google.api.services.calendar.model.EventDateTime;
public class CalenderEventTest {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        Event event = new Event();
        Calendar service =null;

        event.setSummary("Calendar Testing");
        event.setLocation("US");
        event.setDescription("Desired description");

        ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
        attendees.add(new EventAttendee().setEmail("tester@gmail.com"));
        // ...
        event.setAttendees(attendees);


        // set the number of days
        java.util.Calendar startCal = java.util.Calendar.getInstance();
        startCal.set(java.util.Calendar.MONTH, 11);
        startCal.set(java.util.Calendar.DATE, 26);
        startCal.set(java.util.Calendar.HOUR_OF_DAY, 9);
        startCal.set(java.util.Calendar.MINUTE, 0);
        Date startDate = startCal.getTime();

        java.util.Calendar endCal = java.util.Calendar.getInstance();
        endCal.set(java.util.Calendar.MONTH, 11);
        endCal.set(java.util.Calendar.DATE, 26);
        endCal.set(java.util.Calendar.HOUR_OF_DAY, 18);
        endCal.set(java.util.Calendar.MINUTE, 0);
        Date endDate = endCal.getTime();


        DateTime start = new DateTime(startDate);
        event.setStart(new EventDateTime().setDateTime(start));
        DateTime end = new DateTime(endDate);
        event.setEnd(new EventDateTime().setDateTime(end));

        service = new CalendarService().configure();
        Event createdEvent = service.events().insert("primary", event).execute();

        System.out.println("Data is :"+createdEvent.getId()); 
    }
}  
<properties>
        <google.version>1.19.0</google.version>
    </properties>  
<dependencies>
        <dependency>
            <groupId>com.google.api-client</groupId>
            <artifactId>google-api-client</artifactId>
            <version>1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-calendar</artifactId>
            <version>v3-rev96-1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client</artifactId>
            <version>1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client-jackson</artifactId>
            <version>1.19.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client-jackson2</artifactId>
            <version>1.19.0</version>
        </dependency>
    </dependencies>  
import java.util.ArrayList;
导入java.util.Date;
导入com.google.api.client.util.DateTime;
导入com.google.api.services.calendar.calendar;
导入com.google.api.services.calendar.model.Event;
导入com.google.api.services.calendar.model.EventAttendee;
导入com.google.api.services.calendar.model.EventDateTime;
公共类压延试验{
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
事件=新事件();
日历服务=null;
事件集摘要(“日历测试”);
事件设置位置(“美国”);
事件集合描述(“所需描述”);
ArrayList Attendes=新建ArrayList();
Attendes.add(新建EventAttendee().setEmail(“tester@gmail.com"));
// ...
事件。设置与会者(与会者);
//设置天数
java.util.Calendar startCal=java.util.Calendar.getInstance();
startCal.set(java.util.Calendar.MONTH,11);
startCal.set(java.util.Calendar.DATE,26);
startCal.set(java.util.Calendar.HOUR\u OF_DAY,9);
startCal.set(java.util.Calendar.MINUTE,0);
Date startDate=startCal.getTime();
java.util.Calendar endCal=java.util.Calendar.getInstance();
set(java.util.Calendar.MONTH,11);
set(java.util.Calendar.DATE,26);
endCal.set(java.util.Calendar.HOUR\u OF_DAY,18);
set(java.util.Calendar.MINUTE,0);
Date endDate=endCal.getTime();
DateTime开始=新的日期时间(startDate);
event.setStart(neweventdatetime().setDateTime(start));
DateTime end=新的日期时间(endDate);
event.setEnd(新的EventDateTime().setDateTime(end));
服务=新日历服务().configure();
Event createdEvent=service.events().insert(“primary”,Event.execute();
System.out.println(“数据为:+createdEvent.getId());
}
}  
Maven依赖项是:

import java.util.ArrayList;
import java.util.Date;

import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventAttendee;
import com.google.api.services.calendar.model.EventDateTime;
public class CalenderEventTest {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        Event event = new Event();
        Calendar service =null;

        event.setSummary("Calendar Testing");
        event.setLocation("US");
        event.setDescription("Desired description");

        ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
        attendees.add(new EventAttendee().setEmail("tester@gmail.com"));
        // ...
        event.setAttendees(attendees);


        // set the number of days
        java.util.Calendar startCal = java.util.Calendar.getInstance();
        startCal.set(java.util.Calendar.MONTH, 11);
        startCal.set(java.util.Calendar.DATE, 26);
        startCal.set(java.util.Calendar.HOUR_OF_DAY, 9);
        startCal.set(java.util.Calendar.MINUTE, 0);
        Date startDate = startCal.getTime();

        java.util.Calendar endCal = java.util.Calendar.getInstance();
        endCal.set(java.util.Calendar.MONTH, 11);
        endCal.set(java.util.Calendar.DATE, 26);
        endCal.set(java.util.Calendar.HOUR_OF_DAY, 18);
        endCal.set(java.util.Calendar.MINUTE, 0);
        Date endDate = endCal.getTime();


        DateTime start = new DateTime(startDate);
        event.setStart(new EventDateTime().setDateTime(start));
        DateTime end = new DateTime(endDate);
        event.setEnd(new EventDateTime().setDateTime(end));

        service = new CalendarService().configure();
        Event createdEvent = service.events().insert("primary", event).execute();

        System.out.println("Data is :"+createdEvent.getId()); 
    }
}  
<properties>
        <google.version>1.19.0</google.version>
    </properties>  
<dependencies>
        <dependency>
            <groupId>com.google.api-client</groupId>
            <artifactId>google-api-client</artifactId>
            <version>1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-calendar</artifactId>
            <version>v3-rev96-1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client</artifactId>
            <version>1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client-jackson</artifactId>
            <version>1.19.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client-jackson2</artifactId>
            <version>1.19.0</version>
        </dependency>
    </dependencies>  

1.19.0
com.google.api-client
谷歌api客户端
1.19.0
com.google.api
谷歌api服务日历
v3-rev96-1.19.0
com.google.oauth-client
谷歌oauth客户端
1.19.0
com.google.http-client
谷歌http客户端jackson
1.19.0
com.google.http-client
google-http-client-jackson2
1.19.0
您应该将
ServiceApp-13c8dce63281.p12
文件放入maven的
resources
文件夹中。
毫无疑问,它会起作用。

希望它能帮助有需要的人。

您可以使用服务帐户,但它不会访问您的日历。服务帐户有自己的日历,它有自己的实体。它也不能访问其他用户的日历。您可以使用具有写入权限的服务帐户共享您试图访问的日历。@DalmTo创建服务的一些示例代码非常有用helpful@luc如何使用服务帐户创建服务对象?假设我授予了写入权限。请在文档中的“客户端库”部分查看,因为有以下示例: