首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中使用Google drive中的Google Spreadsheet API创建电子表格

在Java中使用Google drive中的Google Spreadsheet API创建电子表格
EN

Stack Overflow用户
提问于 2015-05-27 21:14:56
回答 2查看 12.8K关注 0票数 17

我创建了一些工具,用来填充google电子表格。它正常工作了一年,从今天开始我就出错了

代码语言:javascript
复制
Exception in thread "main" com.google.gdata.util.AuthenticationException: Error authenticating (check service name)
at com.google.gdata.client.GoogleAuthTokenFactory.getAuthException(GoogleAuthTokenFactory.java:688)
at com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthTokenFactory.java:560)
at com.google.gdata.client.GoogleAuthTokenFactory.setUserCredentials(GoogleAuthTokenFactory.java:397)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:364)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:319)
at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:303)

这是与gmail连接的代码部分:

代码语言:javascript
复制
String USERNAME = "usename@........com"; ->of course I'm using proper username and password
    String PASSWORD = "*******";
    SpreadsheetService service
            = new SpreadsheetService("SandboxCheck");
    service.setUserCredentials(USERNAME, PASSWORD);

我不知道如何连接gmail,我试着通过oAuth连接,但我不知道该怎么做。在https://developers.google.com/google-apps/spreadsheets/authorize上的示例中,只有.net的代码。

EN

回答 2

Stack Overflow用户

发布于 2015-05-28 00:28:45

谷歌刚刚停止对OAuth1.0的支持。需要使用OAuth2。要进行切换,首先转到Google开发人员控制台,创建一个项目并设置凭据。然后更新您的代码,类似于下面的Java代码:

代码语言:javascript
复制
private void createSpreadSheetService() throws GeneralSecurityException, IOException, ServiceException {
   HttpTransport httpTransport = new NetHttpTransport();
   JacksonFactory jsonFactory = new JacksonFactory();
   String [] SCOPESArray= {"https://spreadsheets.google.com/feeds", "https://docs.google.com/feeds"};
   final List SCOPES = Arrays.asList(SCOPESArray);
   GoogleCredential credential = new GoogleCredential.Builder()
     .setTransport(httpTransport)
     .setJsonFactory(jsonFactory)
     .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
     .setServiceAccountScopes(SCOPES)
     .setServiceAccountPrivateKeyFromP12File(SERVICE_ACCOUNT_PKCS12_FILE)
     .build();

   SPREADSHEETSERVICE = new SpreadsheetService("data");
   SPREADSHEETSERVICE.setOAuth2Credentials(credential);

}

您需要两个库: google-api-client和google-http-client-jackson。如果您使用Maven,则在pom.xml中包含以下依赖项。

代码语言:javascript
复制
 <dependency>
  <groupId>com.google.api-client</groupId>
  <artifactId>google-api-client</artifactId>
  <version>1.19.0</version>
  <type>jar</type>
 </dependency>
 <dependency>
  <groupId>com.google.http-client</groupId>
  <artifactId>google-http-client-jackson</artifactId>
  <version>1.19.0</version>
  <type>jar</type>
 </dependency>
票数 4
EN

Stack Overflow用户

发布于 2015-05-28 21:50:42

我尝试过Gao的解决方案,但我对库有一个问题。我正在使用netbeans,项目的构建没有错误,但当我试图执行它时,我遇到了这个错误:

代码语言:javascript
复制
 Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
at com.google.api.client.json.jackson.JacksonFactory.<init>(JacksonFactory.java:38)
at SandboxCheck.main(SandboxCheck.java:48) 

我发现类路径有问题,但我不知道如何在netbeans上修复它,我以为它会在添加库时自动完成。我已经添加了

google-oauth-client-1.16.0-rc.jar google-oauth-client-1.16.0-rc-sources.jar google-api-client-1.8.0-beta-sources.jar google-api-client-1.4.1-beta.jar google-api-client-1.19.1.jar

我不确定我是否添加了太多的库,但是如果我删除了for,例如。google-api-client-1.4.1-beta.jar它不会看到JacksonFactory类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30483601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档