【发布时间】:2019-03-22 13:45:01
【问题描述】:
我创建了一个可以访问特定谷歌驱动器的用户。通过 Spring Boot 应用程序 (jhipster),我将此用户连接到 G-Drive。 我的问题是身份验证。我使用此代码进行身份验证(如 Google 为 Web 应用程序提供的示例):
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(".")))
.setApprovalPrompt("auto")
.build();
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
应用程序第一次启动时会尝试查找 StoredCredential 文件。 如果没有,则 Google 会提供一个链接供用户在浏览器中打开它:
请在浏览器中打开以下地址:
https://accounts.google.com/o/oauth2/auth?...
由于我无法从 EC2 实例执行此操作,因此我在本地计算机上执行此操作,然后从服务器将文件上传到预期位置。最后重新启动使 Web 服务器工作一段时间,直到令牌过期。 之后我必须执行相同的程序。
显然我在这里做错了什么。 Web 应用程序每隔几分钟在 G-Drive 上连接一次的正确程序是什么?
更新: 我发现 (https://cloud.google.com/storage/docs/authentication) 我必须使用服务帐户,因为链接建议用于云存储。不幸的是,我已经下载了服务帐户的 json,设置了 env 变量,但这似乎不适用于 google drive rest api (v3)。
谢谢
【问题讨论】:
标签: spring-boot google-drive-api jhipster google-oauth google-oauth-java-client