使用PHP设置Drive API的App Engine的文件夹结构

时间:2015-04-01 00:43:10

标签: php google-app-engine google-drive-api require

设置Google Drive API以使用PHP的Google文档示例需要如下语句:

<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';

other code
?>

我从GitHub下载了一个.zip文件,并将其解压缩。在提取的文件夹和文件中,来自GitHub的google-api-php-client文件包含名为 Google_Client.php 的文件。 src / Google / 目录中有一个名为 Client.php 的文件。

并且没有 contrib 文件夹。

AND ,下载GitHub google-api时,没有名为 DriveService.php 的文件-php-client files。

因此,我假设对文件和文件夹的引用应如下所示:

<?php
require_once 'google-api-php-client/src/Google/Client.php';
require_once 'google-api-php-client/src/Google/Drive.php';

other code
?>

Client.php 文件包含require_once语句,用于autoload.php文件:

if (!class_exists('Google_Client')) {
  require_once dirname(__FILE__) . '/../autoload.php';
}

参考/../中的双点表示当搜索文件 autoload.php 以便包含时,请转到父级文件夹,并在那里搜索。

所以文件夹结构应该是:

src - Folder
  autoload.php

  Google - Folder  
    Client.php
    DriveService.php

autoload.php文件代码为:

<?php

function google_api_php_client_autoload($className)
{
  $classPath = explode('_', $className);
  if ($classPath[0] != 'Google') {
    return;
  }
  // Drop 'Google', and maximum class file path depth in this project is 3.
  $classPath = array_slice($classPath, 1, 2);

  $filePath = dirname(__FILE__) . '/' . implode('/', $classPath) . '.php';
  if (file_exists($filePath)) {
    require_once($filePath);
  }
}

spl_autoload_register('google_api_php_client_autoload');

Drive.php 文件中没有requireinclude个语句。

下载的文件中还有服务文件夹,Google文件夹中有 Service.php 文件。

文档是否有误,我的建议是对的? PHP中Drive API的正确设置是什么?

1 个答案:

答案 0 :(得分:1)

来自GitHub的zip文件的文件夹结构与从Subversion获取的文件和文件夹的文件夹结构不同。使用Subversion下载Google API PHP客户端库时,有一个 contrib 文件夹,还有名为 Google_Client.php 的文件 Google_DriveService.php 。我从一个zip文件中下载并从GitHub中提取了文件。然后使用Subversion下载文件会产生截然不同的结果。 Subversion重命名我猜的文件,并创建不同的文件夹名称。因此,使用Subversion新下载文件夹和文件时,文件夹结构和文件名将与文档中的示例一致。

从一些旧文档中的 使用入门 页面:

https://code.google.com/p/google-api-php-client/wiki/GettingStarted

我找到了一些信息:

  

提取库后。 。 。 。 。 ,你将有一个新的google-api-php-client-x.y目录。库文件本身位于google-api-php-client / src目录

所以,你需要得到一个:

google-api-php-client

目录和a:

google-api-php-client/src

。目录

引用:

  

获得图书馆。 。 ,您将在文件系统的某个位置有一个名为google-api-php-client的目录,其中包含库文件。具体来说,您需要在脚本中包含文件src / Google_Client.php和src / contrib / Google_PlusService.php。

以上引用适用于 Google_PlusService.php ,但可以替换为您需要使用的任何API服务文件。

有多种方法可以将所需的库文件包含在代码中。

在迁移到新库版本的文档中,文件和文件夹的命名约定似乎发生了变化。

https://developers.google.com/api-client-library/php/guide/migration

在使用Drive API之前,需要进行授权。我正在查看的初始文档是针对 命令行 应用程序。我不想要一个命令行应用程序,我正在尝试构建一个Web应用程序。因此,需要首先实施服务器端授权。

https://developers.google.com/drive/web/auth/web-server

服务器端授权需要在代码中包含一个额外的php文件。

require_once "google-api-php-client/src/Google/Service/Oauth2.php";

文档在这里:

https://developers.google.com/drive/web/auth/web-server