我正在尝试编写一个 AppEngine 应用程序,它将 Google 文档写入 Google Drive,放入一组特定的文件夹并设置访问权限。我可以使用旧的 DocsList API,但由于它刚刚被弃用,我决定更新我的代码(无论如何我还有一些额外的功能要添加)。
我面临的问题是:当我使用服务帐户并尝试模拟特定用户时,即使我没有用完任何配额,我也会得到一个带有 usageLimits 的 403。
这是我正在使用的代码:
GoogleCredential credentials = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("xxxxxxxxxxgserviceaccount.com")
.setServiceAccountScopes(DriveScopes.DRIVE)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File("xxxx-privatekey.p12"))
.setServiceAccountUser("user@xxxxxx.org").build();
我比使用这些凭据来启动我的 Drive 对象:
Drive d = Drive.builder(httpTransport, jsonFactory)
.setHttpRequestInitializer(credentials)
.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
DriveRequest driveRequest = (DriveRequest) request;
driveRequest.setPrettyPrint(true);
}
}).setApplicationName("MYAPPNAME").build();
顺便说一句:我尝试过使用 new Drive(....) 但无论我尝试什么,这都行不通。不断抛出找不到内部方法的错误!
回到这个问题:当我使用 'd' 调用类似 .files().get("SOMEFILEID").execute() 的东西时,我得到一个 403
{ "code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "Daily Limit Exceeded. Please sign up",
"reason" : "dailyLimitExceededUnreg",
"extendedHelp" : "https://code.google.com/apis/console"
} ],
"message" : "Daily Limit Exceeded. Please sign up"
}
我不明白为什么这不起作用。我在网上看了一整天,但找不到合适的答案。非常感谢一些帮助。