Java SpringMVC:GoogleAPI为JSON键提供空指针
我正在从事一个SpringMVC项目,我想在其中使用谷歌日历功能。我使用了中的示例代码,并正在尝试实现它。我有ProjectName.json密钥,这些天谷歌使用它进行授权。我得到一个空指针异常。请检查我做错了什么。密钥位于src/main/resources/keys/key.json中。代码如下:Java SpringMVC:GoogleAPI为JSON键提供空指针,java,spring-mvc,oauth,google-api,google-calendar-api,Java,Spring Mvc,Oauth,Google Api,Google Calendar Api,我正在从事一个SpringMVC项目,我想在其中使用谷歌日历功能。我使用了中的示例代码,并正在尝试实现它。我有ProjectName.json密钥,这些天谷歌使用它进行授权。我得到一个空指针异常。请检查我做错了什么。密钥位于src/main/resources/keys/key.json中。代码如下: public void authorizeAndTest(){ try { httpTransport = new NetHttpTransport(
public void authorizeAndTest(){
try {
httpTransport = new NetHttpTransport();
dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
Credential credential = authorize();
client = new com.google.api.services.calendar.Calendar.Builder(httpTransport,JSON_FACTORY,credential).setApplicationName(APPLICATION_NAME).build();
showCalenders();
addCalendarsUsingBatch();
Calendar calendar = addCalendar();
updateCalendar(calendar);
addEvent(calendar);
showEvents(calendar);
deleteCalendarInBatch();
deleteCalendar(calendar);
} catch (Exception e) {
e.printStackTrace();
}
}
private static Credential authorize() throws Exception{
// The line of code below is throwing me an error. I will paste the error log.
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
new InputStreamReader(OAuth.class.getResourceAsStream("keys/c0cc3b4b7502.json")));
if (clientSecrets.getDetails().getClientId().startsWith("Enter")
|| clientSecrets.getDetails().getClientSecret().startsWith("Enter ")) {
System.out.println(
"Enter Client ID and Secret from https://code.google.com/apis/console/?api=calendar "
+ "into calendar-cmdline-sample/src/main/resources/client_secrets.json");
return null;
}
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport,JSON_FACTORY,clientSecrets,
Collections.singleton(CalendarScopes.CALENDAR)).setDataStoreFactory(dataStoreFactory).build();
// Is this where I pass the email address for which I am trying to get calendar???
return new AuthorizationCodeInstalledApp(flow,new LocalServerReceiver()).authorize("user@gmail.com");
}
错误代码:
java.lang.NoSuchMethodError: com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets.load(Lcom/google/api/client/json/JsonFactory;Ljava/io/Reader;)Lcom/google/api/client/googleapis/auth/oauth2/GoogleClientSecrets;
com.journaldev.spring.utility.OAuth.authorize(OAuth.java:72)
com.journaldev.spring.utility.OAuth.authorizeAndTest(OAuth.java:54)
com.journaldev.spring.controller.PersonController.listCanvas(PersonController.java:596)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:483)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
POM.xml:
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-calendar</artifactId>
<version>v3-rev119-1.19.1</version>
</dependency>
<dependency>
<groupId>com.google.gdata</groupId>
<artifactId>core</artifactId>
<version>1.47.1</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-calendar</artifactId>
<version>v3-rev118-1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson</artifactId>
<version>1.15.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-java6</artifactId>
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-calendar</artifactId>
<version>v3-rev119-1.19.1</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client</artifactId>
<version>1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.api.client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.4.1-beta</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client</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>
<dependency>
<groupId>com.google.api.client</groupId>
<artifactId>google-api-client-json</artifactId>
<version>1.2.3-alpha</version>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
com.google.api
谷歌api服务日历
v3-rev119-1.19.1
com.google.gdata
核心
1.47.1
com.google.api
谷歌api服务日历
v3-rev118-1.18.0-rc
com.google.http-client
谷歌http客户端jackson
1.15.0-rc
com.google.oauth-client
google-oauth-client-java6
1.19.0
com.google.api
谷歌api服务日历
v3-rev119-1.19.1
com.google.oauth-client
谷歌oauth客户端
1.18.0-rc
com.google.api.client
谷歌api客户端
1.4.1-beta
com.google.http-client
谷歌http客户端
1.19.0
com.google.http-client
google-http-client-jackson2
1.19.0
com.google.api.client
谷歌api客户端json
1.2.3-α
org.springframework.security.oauth
spring-security-oauth2
2.0.3.1发布
猜问题出在这部分(由于路径错误,无法找到json)
试着改用
OAuth.class.getResourceAsStream("/keys/app-name-c0cc3b4b7502.json"))
谢谢,这很有帮助,但现在它找不到有问题的类本身。你能检查一下新的错误日志吗。谢谢。请检查是否包含正确版本的库。我已解决了该问题,请检查以下问题:
OAuth.class.getResourceAsStream("/keys/app-name-c0cc3b4b7502.json"))