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

Phy*_*ida 1 javascript google-drive-api

我想知道是否可以在随机计算机上打开一个jsfiddle并登录并验证并使用驱动器API,而无需一直运行本地服务器?一个人如何设置它?我很抱歉,如果这是一个简单的问题,但我只是因为我到目前为止发现的说明不清楚而丢失了.

编辑:

到目前为止,我有,从以下这里这里:

  1. 通过Google Developers Console创建了一个项目.
  2. 在那里打开那个项目,导航到API和auth下的API,并确保启用了Drive API
  3. 进入凭据,然后点击"创建新的客户端ID"
    • 选择"Web应用程序"
    • 将授权的javascript原点设置为http:// localhost:4567
    • 删除重定向URI中的任何内容并将其留空,然后按"创建客户端ID".
  4. 取一个像这样,这样或者这样的样本,并将它存储在一个名为index.html的本地文件中.
    • 这不会只是在一个浏览器中打开,所以我必须托管一个本地服务器
    • 我在命令行中导航到该目录,然后键入"python -m SimpleHTTPServer 4567"(不带引号)并托管本地服务器
    • 在我的web浏览器中打开http:// localhost:4567,并且在将新创建的客户端ID复制到他们要求的这些文件中之后,所有这些示例都正常工作.

我也做了一个python应用程序,使用pydrive I:

  1. 单击"创建新客户端ID",然后单击"已安装的应用程序"和"其他",然后单击"创建客户端ID".
  2. 接下来,我转到旧的Google API控制台,点击API Access,找到客户端ID,然后点击下载JSON.
  3. 我把这个client_secrets.json放在我的python应用程序旁边,这允许pydrive成功进行身份验证,我可以使用该客户端ID访问和修改我的google驱动器文件.虽然我在将应用程序提供给另一个人之前当然删除了这个client_secrets.json,并向他们展示了如何执行此过程.

但是,除此之外,我有点不确定,特别是:

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

我知道我很可能需要在开发人员控制台中设置公共API访问权限,但我不完全确定我应该使用哪些Referers.那么有一种简单的方法可以做到这一点吗?

我也知道gspread只能使用客户端的用户名和密码打开google excell电子表格,所以我怀疑我正在寻找的是可能的,但我不确定.

Phy*_*ida 5

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

  1. 创建一个OAuth.io帐户(它是免费的).
  2. 登录后,请转到oauth.io 仪表板.
  3. 您应该查看默认应用程序,或者您可以创建另一个并不重要的应用程序.
  4. 在"域名和网址列入白名单"下,您会看到一个显示"localhost"的小方框.输入" http://fiddle.jshell.net/ "(不带引号),然后按Enter键.这允许任何jsfiddle对您的应用程序进行身份验证
  5. 接下来,我们需要启用Google云端硬盘支持
  6. 现在去你的Oauth.io密钥管理器.点击左侧列表中的Google云端硬盘.按next,然后输入您在上一步中创建的client_id和client_secret(通过Google Developers Console)
    1. 在线选择(至少在线是首选,因为离线应仅用于服务器端)
    2. 单击范围教科书,然后选择" https://www.googleapis.com/auth/drive(查看和管理您的Google云端硬盘中的文件)."
    3. 按完成.现在点击Try Auth按钮,希望你得到一些输出
{
  "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);
    });;
}
Run Code Online (Sandbox Code Playgroud)

您可以在http://jsfiddle.net/JMTVz/41/找到.这使用我的oauth.io客户端ID,但你可以用你的替换它,它也应该工作.