当前位置: 首页 > 面试题库 >

通过Google App Engine的Google Drive API

公西浩
2023-03-14
问题内容

我正在尝试通过Google App Engine随附的App
Identity
接口使用Google
Drive API
。基本上,这使我的Web应用程序可以在服务器之间与Google的API通信。

我不需要用户登录,只需要显示自己的Google云端硬盘文档即可。

但是,在设置了所有适当的值和范围并启用控制台页面上所有正确的Google
Drive旋钮后,仍然可以通过以下简单的GET请求获得该信息https://www.googleapis.com/drive/v2/files

{ "error": { "errors": [ { "domain": "usageLimits", "reason": "dailyLimitExceededUnreg", "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", "extendedHelp": "https://code.google.com/apis/console" } ], "code": 403, "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." }}

怎么了?我想念什么?这是实际执行请求的代码-有趣的是,如果我使用其他API(例如URL Shortener API),则效果很好:

var scopes = new java.util.ArrayList();                                                                                                    
scopes.add("https://www.googleapis.com/auth/drive");                                                                                       
var appIdentity = AppIdentityServiceFactory.getAppIdentityService();                                                                       
var accessToken = appIdentity.getAccessToken(scopes);

var url = new URL("https://www.googleapis.com/drive/v2/files");                                                                            
var connection = url.openConnection();                                                                                                     
connection.setDoOutput(true);                                                                                                              
connection.setRequestMethod("GET");                                                                                                        
connection.addRequestProperty("Content-Type", "application/json");                                                                         
connection.addRequestProperty("Authorization", "OAuth " + accessToken.getAccessToken());

编辑

urlshortner例如,如果我只是简单地将API更改为使用API,那么它可以工作:

var url = new URL("https://www.googleapis.com/urlshortener/v1/url/history");

并输出:

{ "kind": "urlshortener#urlHistory", "totalItems": 0, "itemsPerPage": 30}

因此,肯定有些东西无法与Google云端硬盘和应用身份一起使用吗?


问题答案:

您收到的403错误意味着GET中没有Authorization标头。逻辑是,没有Authorization标头,您将是匿名的(您是大军等等)。匿名使用的云端硬盘配额为零,因此该消息。URL缩短器具有较高的匿名配额,因此可以使用。

建议您将URL更改为指向自己的http服务器,然后检查您实际发送的标头。



 类似资料:
  • PS:对不起我的英语,我是一个绝望的法国人,需要帮助

  • 我正在尝试将一个基于PHP的API从共享主机移植到Google应用程序引擎。我下载了PHPSDK,在启动器中创建了一个新的应用程序,在PHP中启用了cURL。ini(使用),现在我得到这个错误: 如果我向curl_init()添加反斜杠(告诉它不要使用MyNamespace),我会得到这个: 除了启用cURL_lite()(稍后我可能会解决这个问题,因为它不支持我需要的cURL选项),我如何解决这

  • 5.4 通过 HTTPS 的通信 大多数智能手机应用都与互联网上的 Web 服务器通信。 作为通信的方法,我们在这里集中讨论 HTTP 和 HTTPS 的两种方法。 从安全角度来看,HTTPS 通信更为可取。 最近,Google 或 Facebook 等主要 Web 服务已经开始使用 HTTPS 作为默认设置。 自 2012 年以来,Android 应用中 HTTPS 通信实现的许多缺陷已被指出。

  • 关于Spring WebFlow WebClient的小问题,尤其是如何配置一个使用TLSv1.2发送出站请求的问题。 我的应用程序是Spring WebFlow 2.4.2,其中启用了HTTP/2、SSL、mTLS和TLSv1.3。 注意它是TLSv1。3,而不是设置上的TLSv1,2。 创建WebClient实例时: 并使用它向TLSv1发送请求。3启用服务器,工作正常,非常开心。 但是,我需

  • 我正在尝试运行Jersey的HelloWorld示例,但失败了。这就是我尝试过的。 我已经设置我的这样 我已经设置了我的像这样, 我的服务设置是这样的, 我正在使用这些libs 这是这个问题的视频http://screencast.com/t/oIYKMQw1x 知道我做错了什么吗? 谢谢 堆栈跟踪 Apr 23,2012 12:19:27 AMcom.sun.jersey.server.impl

  • 问题内容: 是否可以通过react-router中的组件传递对象? 就像是: 与我从to 组件传递过来的方式相同。 如果不可能的话,最好的方法是什么: 我有一个React + Flux应用程序,并且用一些数据渲染了表格。我想做的是,当我单击其中一行时,它将带我到该行的一些 详细信息 组件。该行包含了我需要的所有数据,所以我认为如果可以将其传递通过,那将是很好的。 另一种选择是在url中传递行的,在

  • 我有这样的桌子结构 学生 主题 马克斯 要求是,列出所有通过考试的学生( 不知道要添加什么,如果条件 预期产出

  • 问题内容: 有没有人能够通过https使用kso​​ap2 android连接到Soap服务器? 我不断收到“主机名<###>未被验证”的错误 我正在做 显然回头看看不是kandroid的其他ksoap,您可以通过https连接到我们的电话,但我找不到在android版本中做到这一点的方法。 是否有人找到或知道要使用的通话方式? 谢谢你的帮助 问题答案: android ksoap2 2.5.2已