我需要在GAE应用程序中初始化Drive Service。我正在使用带有3条腿的OAuth 2.0。我使用常规Google帐户(无服务帐户)。我在尝试:
GoogleCredential credentials = usuarioService.getGoogleCredentials();
Drive service = new Drive.Builder(TRANSPORT, JSON_FACTORY, credentials).build();
我收到了这个错误:
Caused by: java.lang.NoSuchFieldError: MAJOR_VERSION
at com.google.api.services.drive.Drive.<clinit>(Drive.java:48)
at com.google.api.services.drive.Drive$Builder.build(Drive.java:8243)
OAuth 2.0流程授权正在运行,但访问云端硬盘我遇到上述错误。
我认为我的GoogleCredentials是错误的,因为我使用相同的方法获取授权才能使用Google Picker。
我从用户那里获得GoogleCredential的方式是:
GoogleCredential credentials = new GoogleCredential.Builder()
.setClientSecrets(clientId, clientSecret)
.setJsonFactory(JSON_FACTORY)
.setTransport(HTTP_TRANSPORT)
.build()
.setRefreshToken(user.getOAuth2RefreshToken())
.setAccessToken(user.getOAuth2AccessToken()); //previous Access Token
你能帮帮我吗?
迭。
更新 我已将驱动器库更新为the last one(v2)和google-api-client 1.18,但仍然无效。
现在我收到了这个错误:
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.google.api.services.drive.Drive
更新2 当我重建GoogleCredential对象时,考虑到我做错了什么,当我从授权流程中请求原始凭证时,我试图调用Drive.Builder():
final GoogleTokenResponse response = flow.newTokenRequest(authCode).setRedirectUri(callback).execute();
Credential credential = flow.createAndStoreCredential(response, null);
// Calling to Drive Service
Drive service = new Drive.Builder(httpTransport, jsonFactory, credential).build();
我得到同样的错误:
Caused by: java.lang.NoSuchFieldError: MAJOR_VERSION
我对日历执行相同的操作并收到相同的错误
我正在使用下一个库: google-api-client 1.18
google-api-client-servlet 1.18
谷歌-API服务驱v2-1.18
google-http-client 1.18
google-http-client-jackson 1.18
google-oauth-client 1.18
答案 0 :(得分:0)
<强>解决方案:强>
喝了很多咖啡后,我发现了错误。
我已经清理了一些图书馆的项目,并且我使用的是1.15版本的Google库,它正在运行(相同的代码)。