首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >谷歌硬盘服务帐户返回403 usageLimits

谷歌硬盘服务帐户返回403 usageLimits
EN

Stack Overflow用户
提问于 2012-09-20 05:51:23
回答 2查看 4.1K关注 0票数 4

我正在尝试编写一个AppEngine应用程序,它可以将谷歌文档写入Google Drive,将其放入一组特定的文件夹中,并设置访问权限。我可以使用旧的DocsList应用程序接口,但是因为它刚刚被弃用,所以我决定更新我的代码(而且我还有一些额外的函数要添加)。

我面临的问题是:当我使用一个服务帐户并试图模拟一个特定的用户时,即使我没有用完我的配额,我也得到了usageLimits的403。

下面是我使用的代码:

代码语言:javascript
代码运行次数:0
运行
复制
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对象:

代码语言:javascript
代码运行次数:0
运行
复制
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

代码语言:javascript
代码运行次数:0
运行
复制
{ "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"
}

我不明白为什么这个不起作用。我在网上找了一整天,但找不到合适的答案。一些帮助是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 09:42:34

当API调用缺少Authorization http头时,我通常会得到403。跟踪http并查看报头。" quota“消息的基本原理是,如果没有Auth头,您就是匿名的,并且匿名使用的配额为零。

你也可以检查你的应用程序是否注册了这两个驱动器app,因为我听说这可能会导致相同的问题。

在内部方法问题上,这听起来像是在使用不兼容的库版本。对我来说,最有效的方法是删除所有与示例代码一起下载的库,然后使用Google Eclipse插件" Google /Add Google APIs...“下载所有最新版本。

票数 1
EN

Stack Overflow用户

发布于 2012-09-21 15:46:49

所以pinoyyid的答案确实有帮助,尽管它不是最终的答案。

我最终像这样解决了它:

我使用以下作用域将我的AppID (xxxxx.apps.googleusercontent.com)添加到我的CPanel https://www.google.com/a/cpanel/[[YOURDOMAIN]]/ManageOauthClients中:

在那之后,我可以向Drive环境发出一个经过身份验证的请求。现在遇到了一堆不同的问题,但403已经解决了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12503437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档