2014-09-19 87 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");
這是按預期工作。 感謝您的意見。

相關問題