2014-09-19 85 views
0

我正在使用Google日历客户端API并尝试使用Google进行身份验证。
以下代码正在独立应用程序中工作,不能在Web应用程序环境中工作
在web应用程序的情况下,
setServiceAccountPrivateKeyFromP12File(File)方法无法找到我提供的路径,我尝试了很多方式由stackexchange用户给出的答案。
但是对我来说没有用。每次它只显示一条消息,文件路径(没有这样的文件或路径)。 不知道什么是错的。请帮我找到解决这个问题的方法。GoogleCredential客户端API无法在Web应用程序中找到文件路径

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport) 
.setJsonFactory(JSON_FACTORY) 
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
.setServiceAccountScopes(Collections.singleton(CalendarScopes.CALENDAR)) 
.setServiceAccountPrivateKeyFromP12File(new File(CLIENT_SECRET)).build(); 

这里的private static final String CLIENT_SECRET="credentials/Test.p12";
我试过ClassLoadersURL但没用。始终抛出FileNotFoundException
我的项目是maven项目和代码是在依赖jar文件。

+0

您的路径是否正确并存在? – 2014-09-19 08:52:51

+0

当然,因为它是一个maven项目,所以在资源文件夹中我创建了凭证文件夹并放置了该文件。 – 2014-09-19 09:01:35

+0

由于您使用的是相对路径,它是否正确映射到您提到的文件夹? – 2014-09-19 09:03:08

回答

0

这不是Google Client API的问题。 在web应用程序中,我们应该给绝对路径创建一个文件实例。
通常,Web应用程序提供相对路径,不可能在Java中使用此相对路径创建实例。 因为java.io.File不知道相对路径。它只知道操作系统特定的绝对路径来创建实例文件 因此,String absoluteDiskPath = servletContext.getRealPath("/credentials/secret.p12");
这是按预期工作。 感谢您的意见。

相关问题