谷歌应用程序引擎-如何用GAE初始化驱动服务



我需要在GAE应用程序中初始化驱动器服务。我使用的是带有3兆的OAuth 2.0。我使用常规的谷歌账户(没有服务账户)。我正在尝试:

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是错误的,因为我使用相同的方法来获得授权以使用GooglePicker。

我如何从用户那里获得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

你能帮我吗?

迭戈。

更新我已经更新了驱动器库到最后一个(v2)和谷歌api客户端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

我对日历做了同样的操作,但我得到了同样的错误

我正在使用以下库:谷歌api客户端1.18

谷歌api客户端servlet 1.18

谷歌api-service-drive-v2-1.18

谷歌http客户端1.18

谷歌http客户端jackson 1.18

谷歌oauth客户端1.18

解决方案:

喝了很多杯咖啡后,我发现了错误。

我已经清理了我的项目中的一些库,我使用的是1.15版本的谷歌库,它正在工作(相同的代码)。

相关内容

  • 没有找到相关文章

最新更新