Java Google Drive服务帐户返回403个usageLimits
我正在尝试编写一个AppEngine应用程序,将Google文档写入Google Drive,放入一组特定的文件夹并设置访问权限。我在使用旧的docslistapi时使用了这个函数,但由于它刚刚被弃用,我决定更新我的代码(而且我还有一些附加函数要添加) 我面临的问题是:当我使用一个服务帐户并试图模拟一个特定的用户时,即使我没有用完任何配额,我也会得到usageLimits的403 以下是我正在使用的代码:Java Google Drive服务帐户返回403个usageLimits,java,google-app-engine,oauth-2.0,google-drive-api,Java,Google App Engine,Oauth 2.0,Google Drive Api,我正在尝试编写一个AppEngine应用程序,将Google文档写入Google Drive,放入一组特定的文件夹并设置访问权限。我在使用旧的docslistapi时使用了这个函数,但由于它刚刚被弃用,我决定更新我的代码(而且我还有一些附加函数要添加) 我面临的问题是:当我使用一个服务帐户并试图模拟一个特定的用户时,即使我没有用完任何配额,我也会得到usageLimits的403 以下是我正在使用的代码: GoogleCredential credentials = new GoogleCred
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 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();
顺便说一句:我试过使用新的驱动器(……),但不管我怎么尝试,都不会成功。不断抛出找不到内部方法的错误
回到这个问题:
当我使用'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"
}
我不明白为什么这样不行。我在网上找了一整天,但找不到合适的答案。非常感谢您的帮助。当API调用缺少授权http头时,我通常会得到403。跟踪http并查看标题。“quota”消息的基本原理是,如果没有Auth头,您是匿名的,匿名使用的配额为零 您还可以检查您的应用程序是否已为这两个驱动器API注册,因为我听说这可能会导致相同的问题
关于内部方法问题,这听起来像是在使用不兼容的库版本。对我来说,最有效的方法是删除我用示例代码下载的所有库,然后使用Google Eclipse插件“Google/Add Google API…”下载所有最新版本。因此pinoyyid的答案确实有用,尽管它不是最终的答案 我最终是这样解决的: 我把我的AppID(xxxxx.apps.googleusercontent.com)添加到我的CPanel中https://www.google.com/a/cpanel/[[YOURDOMAIN]]/ManageOauthClients 在这些范围内:
之后,我可以向驱动器环境发出经过身份验证的请求。现在遇到了一堆不同的问题,但403问题解决了。可能重复:我检查过了。。。这是一个客户端应用程序。我对服务器端的服务帐户有问题。但是再一次通过这些点。。。谁知道呢,它可能会起作用。我删除了所有其他lib,并通过eclipse插件添加了它。我最初的想法是一样的:一定是旧的libs。但不幸的是没有。我查看了标题位,但被卡住了,因为要将标题设置为包含承载者,我需要令牌,但由于使用服务帐户,我没有可用的令牌(或者这是我错的地方吗?)。好的。。。我今天一直在疯狂地调试,发现没有令牌集。所以请求中没有带胡子的标记。现在我需要弄清楚的是如何从我的服务帐户中获取令牌。@pin0yyid如何设置头?我对新的api
https://stackoverflow.com/questions/60704698/how-to-create-google-sheets-using-service-account-credential-in-python
我也有同样的问题,但我没有谷歌应用程序。我只有一个foo.appspot.com域名。有什么帮助吗?你在为GMail开发这个吗?因为我不认为GMail有服务账户这回事。如果你能提供更多的信息,我也许能帮上忙,而不是Gmail。我只需要使用驱动器API。我正在使用https://www.googleapis.com/drive/v2/files
API。我在这里发布了一个问题,如果您愿意帮助我,我将不胜感激: