我在Spring启动项目中运行Google Calendar API时遇到了一个问题。它是一个运行在live server上的企业项目
GoogleCalendarService.java
@Service
@Slf4j
public class GoogleCalenderService {
private static final List<String> SCOPES = Collections.singletonList(CalendarScopes.CALENDAR);
private static final String CREDENTIALS_FILE_PATH = "/RP_OAuth.json";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final String TOKENS_DIRECTORY_PATH = "tokens";
private static final String APPLICATION_NAME = "Google Calendar API Java Quickstart";
private GoogleAuthorizationCodeFlow flow;
private NetHttpTransport HTTP_TRANSPORT;
public String getCredentials(String candidateEmail,String recruiterEmail,long startTimeStamp, long endTimeStamp) {
// Load client secrets.
try {
AuthorizationCodeRequestUrl authorizationUrl;
authorizationUrl = getFlow().newAuthorizationUrl()
.setRedirectUri("http://localhost:8948/Callback/"
+startTimeStamp+
"/"+endTimeStamp+
"/"+recruiterEmail+
"/"+candidateEmail
);
return authorizationUrl.build();
} catch (Exception e) {
log.error(e.getMessage());
}
return null;
}
public GoogleAuthorizationCodeFlow getFlow() {
if (flow == null) {
try {
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
InputStream in = GoogleCalenderService.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
if (in == null) {
throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
}
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
.setAccessType("offline")
.build();
} catch (Exception e) {
log.error(e.getMessage());
}
}
return flow;
}
public String createCredentials(String code,long startTimeStamp, long endTimeStamp, String recruiterEmail,
String candidateEmail) {
try {
TokenResponse response = getFlow().newTokenRequest(code).setRedirectUri("http://localhost:8948/Callback/"
+startTimeStamp+
"/"+endTimeStamp+
"/"+recruiterEmail+
"/"+candidateEmail
)
.execute();
Credential credential = flow.createAndStoreCredential(response, "userID");
Calendar service = new Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.build();
Event event = new Event()
.setSummary("You have a Scheduled Interview")
.setDescription("Please be present on the scheduled interview date");
DateTime startDateTime = new DateTime(startTimeStamp);
EventDateTime start = new EventDateTime()
.setDateTime(startDateTime);
event.setStart(start);
DateTime endDateTime = new DateTime(endTimeStamp);
EventDateTime end = new EventDateTime()
.setDateTime(endDateTime);
event.setEnd(end);
String[] recurrence = new String[]{"RRULE:FREQ=DAILY;COUNT=2"};
event.setRecurrence(Arrays.asList(recurrence));
EventAttendee[] attendees = new EventAttendee[]{
new EventAttendee().setEmail(recruiterEmail),
new EventAttendee().setEmail(candidateEmail),
};
event.setAttendees(Arrays.asList(attendees));
EventReminder[] reminderOverrides = new EventReminder[]{
new EventReminder().setMethod("email").setMinutes(24 * 60),
new EventReminder().setMethod("popup").setMinutes(10),
};
Event.Reminders reminders = new Event.Reminders()
.setUseDefault(false)
.setOverrides(Arrays.asList(reminderOverrides));
event.setReminders(reminders);
String calendarId = "primary";
event = service.events().insert(calendarId, event).execute();
System.out.printf("Event created: %s\n", event.getHtmlLink());
return event.getHtmlLink();
} catch (IOException e) {
log.error(e.getMessage());
return null;
}
}
}
这是我收到的错误消息
您的浏览器正在查找地址localhost:8948。如果您的浏览器没有在live server上运行,它必然会失败。您应该从请求中获取主机,并使用该主机而不是localhost,在我看来,这应该使其工作。
我希望你能帮帮我。 我正在尝试使用Oauth2身份验证连接到Google(日历)API。 为此,我遵循了以下步骤: 通过Google开发者控制台注册应用程序 使用composer(google-api-php-client)安装客户端库 将以下脚本放置在供应商文件夹中: 不幸的是,在单击“接受”按钮进行身份验证后,我得到了一个错误: 到目前为止,谷歌的研究并没有帮助。 可能的解决办法: > 正确设
我是新手,但我想将google API与PHP结合使用,但它不起作用。我已经创建了
我从快速入门开始(https://developers.google.com/google-apps/calendar/quickstart/python)而且效果很好。然后我尝试用这个指南插入事件(https://developers.google.com/google-apps/calendar/create-events)。我将此代码添加到quickstart的代码中,但出现错误。如何查看我
问题内容: 如何使用google-api-java-client解析用户Google日历中事件的开始和结束时间? 从Google代码安装此示例android项目后,我可以进入Google日历并解析一些信息(例如所有日历,事件名称,发布时间和摘要),但是我无法终生获取事件的开始和结束时间。 我对代码的理解是这样的。 在主要活动类(CalendarAndroidSample.java)内,这是获取我每
通过Spring Security OAuth2重用终端用户Google身份验证以访问Web应用程序中的Google日历API 我能够通过Spring Security创建一个小的Spring Boot Web应用程序并进行登录 当应用程序启动时,我可以访问http://localhost:8080/user用户被要求谷歌登录。成功登录后,浏览器中会显示json配置文件,作为以下用户的响应: 我想
我正在扩展一个PHP应用程序,它允许管理员创建事件并为这些事件分配特定用户。但是,在用户被列为可分配之前,我会检查用户的日历,看看他们是否可用。 我已经使用EWS为Exchange构建了一次,并使用FindItem方法在给定的时间段内检索用户电子邮件地址的事件,但我在Google日历API中很难找到等效的事件。 Events和FreeBusy Call似乎都需要特定用户的calendarId,这对