我创建了一些工具,用来填充google电子表格。它正常工作了一年,从今天开始我就出错了
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连接的代码部分:
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的代码。
发布于 2015-05-28 00:28:45
谷歌刚刚停止对OAuth1.0的支持。需要使用OAuth2。要进行切换,首先转到Google开发人员控制台,创建一个项目并设置凭据。然后更新您的代码,类似于下面的Java代码:
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中包含以下依赖项。
<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>
发布于 2015-05-28 21:50:42
我尝试过Gao的解决方案,但我对库有一个问题。我正在使用netbeans,项目的构建没有错误,但当我试图执行它时,我遇到了这个错误:
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类。
https://stackoverflow.com/questions/30483601
复制相似问题