在网页上显示Google云端硬盘中的文档

时间:2014-01-26 18:42:33

标签: javascript php google-drive-api google-drive-realtime-api

是否可以在网页上显示我的驱动器中的文档?我希望用户能够直接从我的驱动器单击文档并下载它。我该怎么做呢?谢谢你的建议。

4 个答案:

答案 0 :(得分:5)

最快最简单的解决方案是使用iframe嵌入文件夹(不需要javascript)。显然,这也是最不灵活的解决方案,尽管您可以使用CSS来更改iframe内容的布局(见下文)。

Google云端硬盘不允许嵌入您通常使用的网址。它的X-Frame-Options标头设置为“SAMEORIGIN”,阻止在iframe中使用。因此,您必须使用以下链接,允许嵌入:
https://drive.google.com/embeddedfolderview?id=DOCUMENT_ID#VIEW_TYPE

DOCUMENT_ID 是普通共享链接(看起来像https://drive.google.com/folderview?id=DOCUMENT_ID)中提到的ID,因此您只需从中复制即可。

VIEW_TYPE 应为'grid'或'list',具体取决于您的偏好。

如果您需要更改iframe内容的样式,请查看this solution

答案 1 :(得分:3)

对于HTML / JavaScript解决方案,请查看以下链接:

https://developers.google.com/drive/quickstart-js
https://www.youtube.com/watch?v=09geUJg11iA
https://developers.google.com/drive/web/auth/web-client

这是使用JavaScript的最简单方法,大部分复杂性都在于 您的WebApp授权。以下示例读取您指定的文件夹中的文件ID,名称和说明 - 转到:https://cloud.google.com/console/project    并创建一个新项目“xyz”
- 选择“API& auth”,禁用您不需要的,启用“Drive API”
- 选择“凭据”,
 按“创建新客户ID”按钮
      x Web应用程序
      授权的Javascript来源:“https://googledrive.com/
      授权重定向URI:“https://googledrive.com/oauth2callback

    它将导致:
      客户ID:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
      电子邮件地址:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com
      客户机密:xxxxxxxxxxxxxxxxxxxx
      重定向URI:https://googledrive.com/oauth2callback
      Javascript起源:https://googledrive.com/

- 在下面的代码中,替换
    CLIENT_ID with xxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
    FOLDER_ID包含您在文件夹地址行中看到的ID,
    https://drive.google.com/?tab=mo&authuser=0#folders/xxxxxxxxxxxxxxxxxxx

- 运行它,授权

我不知道你是否读过JS,代码可以自下而上,我做的就是尽可能简单。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
  var FOLDER_ID = '.xxxxxxxxxxxxxxxxxx';    // the folder files reside in
  var CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
  var SCOPE =    //'https://www.googleapis.com/auth/drive'; 
  [
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/drive.file',     // for description, 
  ];

  function rsvpCB(resp) {
    var picAlbumLst = '<ul>\n';
    for (i=0; i<resp.items.length; i++) 
      picAlbumLst += (
      '  <li>'+resp.items[i].id+',&nbsp;'+resp.items[i].title+',&nbsp;'+resp.items[i].description+'</li>\n');
    picAlbumLst += "</ul>\n";
    $('#container').append(picAlbumLst);
  }
  function rqstCB() {   //test @ https://developers.google.com/drive/v2/reference/files/list
    var rv = gapi.client.drive.files.list({
      'q': '"'+FOLDER_ID+'" in parents and trashed = false',
      'fields' : 'items(id,title,description)'   //'items(id,title,description,indexableText)'   
    }).execute(rsvpCB);
  }
  // authorization server reply
  function onAuthResult(authResult) {
    var authButton = document.getElementById('authorizeButton');
    authButton.style.display = 'none';
    if (authResult && !authResult.error) {  // access token successfully retrieved
      gapi.client.load('drive', 'v2', rqstCB);   
    } else {  // no access token retrieved, force the authorization flow.
      authButton.style.display = 'block';
      authButton.onclick = function() {
        checkAuth(false);
      }
    }
  }
  // check if the current user has authorized the application.
  function checkAuth(bNow) {
    gapi.auth.authorize({'client_id':CLIENT_ID, 'scope':SCOPE, 'immediate':bNow}, onAuthResult);
  }
  // called when the client library is loaded, look below
  function onLoadCB() { 
    checkAuth(true); 
  }
</script>
<script src="https://apis.google.com/js/client.js?onload=onLoadCB"></script>
<body style="background-color: transparent;">
  <input type="button" id="authorizeButton" style="display: none" value="Authorize" />
  <div id="container">
  </div>
</body>

答案 2 :(得分:1)

这应该使用Google API来完成。您可以在google上搜索google drive php api list files。我还在SO上找到了thisthis

答案 3 :(得分:1)

以下是一些要点:

  • 您是否希望任何拥有该网址的人都能看到您的文档?您可以将文档公开分享给互联网上的任何人。另外,您可以设置对特定文件夹的读取权限。只需右键单击Google Doc文件,然后从快捷菜单中选择“共享”。
  • 我假设您希望人们下载您的文档,即使您未登录也是如此。这称为“离线访问”,是您需要弄清楚的所有内容之一这是一个程序。
  • 如果您只想向用户提供read access,则在前端使用JavaScript,jQuery等是可行的选择。您也可以在PHP中执行此操作,这只是个人偏好的问题。
  • 要在代码中执行所有这些操作,您需要授予读取文件的权限。 oAuth2过程有多个步骤,理解基本流程是很好的。设置代码和网页以初始授权,然后检索和存储令牌可能会让人感到困惑。
  • 您的Google项目有一个设置,用于说明授权请求来源的来源。那是你的网站。但是,如果您想在本地开发和测试,可以将Javascript Origins设置为http://localhost
  • 你有多少时间,有多少编程经验?为用户提供几行指令“手动”下载文件,而不是编写授权检查,会更容易吗?
  • 将文档放入您的网页很容易。
  • 要在您的网站中嵌入Google文档,请转到您的Google云端硬盘,打开文档然后选择File然后Publish to Web,您将获得一个可嵌入的HTML iFrame标记进入你的网页。您可以更改iFrame的高度和宽度以匹配文档大小。 iFrame Instructions W3Schools
  • 只需从菜单中选择FILE然后选择DOWNLOAD AS,即可从联机文档的在线版本轻松下载文档。
  • 要快速启动并运行,只需向用户提供有关如何下载“手动”的几行说明,然后查看是否可以对代码进行编程。
  • 提供指向共享文档的链接,而不是编写按钮,然后处理代码。
  • 在Google云端硬盘中搜索Git Hub,您可能会在那里找到一些内容。
  • 某些官方Google代码示例比您需要的更复杂,需要很长时间才能弄明白。文档页面中的代码示例更简单,但几乎从未完成功能代码示例。你需要把很多拼图拼凑在一起才能使它发挥作用。