当前位置: 首页 > 知识库问答 >
问题:

如何设置Google Drive客户端ID以便在没有本地服务器的情况下访问?

鲁品
2023-03-14

我想知道是否有可能,比如说,在随机计算机上打开一个jsfiddle并登录并进行身份验证并使用驱动器API,而不必一直运行本地服务器?究竟如何设置它?我很抱歉,如果这是一个简单的问题,但我只是有点迷路了,因为到目前为止我发现的说明不清楚。

编辑:

到目前为止,我已经从这里和这里跟随:

  • 通过Google Developers Console创建了一个项目。
  • 在那里打开那个项目,导航到API下的API
  • 这不会通过简单地在浏览器中打开来运行,因此我必须托管本地服务器
  • 我在命令行中导航到该目录,然后输入“python-m SimpleHTTPServer 4567”(不带引号),这托管了一个本地服务器
  • 在我的网络浏览器中打开了http://localhost:4567,在将新创建的客户端ID复制到他们要求的这些文件中之后,所有这些示例都运行良好。

我还做了一个python应用程序,使用pyDrive I:

    < li >单击“创建新的客户端ID”,然后单击“已安装的应用程序”和“其他”,然后单击“创建客户端ID” < li >接下来,我转到旧的Google APIs控制台,单击API访问,找到客户端ID,然后单击下载JSON。 < li >我将这个client_secrets.json放在我的python应用程序旁边,这允许pydrive成功地进行身份验证,我可以使用该客户端ID在任何地方访问和修改我的google drive文件。当然,在将应用程序交给其他人之前,我删除了这个client_secrets.json,并向他们展示了如何完成这个过程。

然而,除此之外,我有点不确定,具体来说:

  • 如何在Web应用程序中使用驱动器api而无需设置本地服务器,例如只需在jsfiddle中运行代码并通过使用客户端ID通过我的项目发送请求,以及
  • 如果设置了一个本地服务器,网络上的任何人都可以访问,如何修改上述步骤以允许任何客户端打开该服务器的网页以使用谷歌驱动器API?

我知道我很可能需要在开发者控制台中设置一个公共API访问,但是我不完全确定我应该使用什么Referers。那么有没有一种简单的方法可以做到这些呢?

我也知道gspread只能使用客户的用户名和密码打开谷歌excel电子表格,所以我怀疑我正在寻找的东西是可能的,但我不确定。

共有2个答案

郎德馨
2023-03-14

您可以使用OAuth Playground做同样的事情。

请参阅如何在没有用户干预的情况下授权应用(Web 或已安装)?(规范?

步骤11将是不同的。与将刷新令牌粘贴到服务器应用程序(您没有)不同,您将以与答案中相同的方式将访问令牌粘贴到JS中。

羊舌新荣
2023-03-14

好吧,所以我找到了一个很好的解决方案:

  • 制作一个OAuth。io账户(免费)
  • 登录后,转到您的oauth。io仪表板
  • 你应该看看一个默认的应用程序,或者你可以制作另一个,这并不重要
  • 在“域”下
{
  "access_token": "ya29.AwH-1N_gnstLBuZfOR4W9CCcggKrQpMyKYV4QVEtCiIzHozNU5AfUJoYQzukALfjdiw2iOCUve7JbQ",
  "token_type": "Bearer",
  "expires_in": 3600,
  "provider": "google_drive"
}

要使用它,您可以这样做:

// This only works because we're set to "No wrap - in <head>"
function ShowDriveFileList() {
    var accessToken;
    // Initialize OAuth with our key
    OAuth.initialize('lmGlb8BaftfF4Y5en_c8XYOSq2A');

   // Connect to google drive, and print out file list
    OAuth.popup('google_drive').done(function (result) {
    var xmlHttp = null;
        xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", "https://www.googleapis.com/drive/v2/files", false);
        xmlHttp.setRequestHeader("Authorization", "Bearer " + result.access_token);
        xmlHttp.send(null);
        alert(xmlHttp.responseText);
    }).fail(function (err) {
        alert(err);
    });;
}

你可以在http://jsfiddle.net/JMTVz/41/.这使用了我的oauth。io客户端id,但您可以将其替换为您的,它也应该工作。

 类似资料:
  • 我有一个Spring boot项目,它有使用kafka进行日志记录的依赖项。我无法摆脱所述依赖项,因为我的逻辑需要来自该依赖项的代码 我已尝试禁用自动配置 我尝试通过bean配置将missingTopicsFatal设置为false 但很明显,设置已经是假的,因为我的应用程序运行时没有失败,只是tomcat不想打开侦听端口 应用程序启动,但spring拒绝打开侦听端口,并继续使用错误进行循环 在本

  • 我花了过去几个小时试图设置2默认图像的nodejs 14和rethinkdb 2.3.5,所以很抱歉,如果语气有点沮丧,但我目前感到沮丧。 我的要求似乎超级简单。 下载nodejs 14和RejectDB 2.3.5的默认图像。 将我当前目录中的所有内容复制到nodejs 14映像中 我希望nodejs图像依赖于DB图像 在nodejs 14图像中运行2个命令<代码>npm ci和 请参阅测试中的

  • 问题内容: 我需要编写一个使用HTML5和canvas的软件。 整个软件应该能够在本地运行,而不需要服务器。所以我只能使用Javascript,不能使用php。 困难的部分:我必须动态获取操作期间所需的文本文件的内容。 例如:当软件启动时,我需要“ config.json”。在用户做出一些选择之后,我需要“ story1.txt”或“ story2.txt”,依此类推。 我的问题: 我不能使用Aj

  • 我使用了,但对于当前的问题,它没有帮助。我希望能够创建特定于项目的包: 我尝试了多种方法,但如何获得

  • 问题内容: 我想问一下我是否可以在没有安装Web服务器的情况下运行php。我是否必须像CGI一样使用php并通过命令行运行我的页面?如果是这样,我必须通过安装php选择哪些步骤?我是说偏好设置为CGI以及该步骤之后的组件? 我安装了php 5.3.3,但似乎无法正常工作,我收到几则消息,提示缺少php5ts.dll,当我将该文件放在ext文件夹中时,会出现其他错误消息。是否需要使用任何配置文件或步

  • 我正在尝试从FireBase获取所有用户的名称,该名称包含给定的字符串。例如,如果我有这些用户: 我希望所有用户的名称都包含'D',因此我希望得到这样的结果: 这是我的Firebase目前的结构: 2)现在我不想有服务器端代码,什么是实现自定义索引的好的和有效的方法? 谢谢