繁体   English   中英

PHP脚本访问服务器到服务器到谷歌驱动器显示我自己的文件

[英]PHP script to access server to server to Google drive to display my own file

我需要帮助才能正确决定如何使用谷歌API。

我想开发一个脚本来连接服务器到服务器(没有任何Oauth2连接)到我的谷歌驱动器文件夹,以便在网页中显示谷歌驱动器文件和文件夹。 如果某些文件更新,我还会设置一个cron作业来执行操作。

这可能吗? 在谷歌云平台中,我发现驱动器api具有服务器到服务器的交互。 这是正确的解决方案吗?

谢谢!

https://developers.google.com/drive/v3/web/quickstart/php

在这里,您将找到启用API的方法。 从那时起,您可以使用该库。

该网站将提供一个样本:

 <?php require __DIR__ . '/vendor/autoload.php'; define('APPLICATION_NAME', 'Drive API PHP Quickstart'); define('CREDENTIALS_PATH', '~/.credentials/drive-php-quickstart.json'); define('CLIENT_SECRET_PATH', __DIR__ . '/client_secret.json'); // If modifying these scopes, delete your previously saved credentials // at ~/.credentials/drive-php-quickstart.json define('SCOPES', implode(' ', array( Google_Service_Drive::DRIVE_METADATA_READONLY) )); if (php_sapi_name() != 'cli') { throw new Exception('This application must be run on the command line.'); } /** * Returns an authorized API client. * @return Google_Client the authorized client object */ function getClient() { $client = new Google_Client(); $client->setApplicationName(APPLICATION_NAME); $client->setScopes(SCOPES); $client->setAuthConfigFile(CLIENT_SECRET_PATH); $client->setAccessType('offline'); // Load previously authorized credentials from a file. $credentialsPath = expandHomeDirectory(CREDENTIALS_PATH); if (file_exists($credentialsPath)) { $accessToken = file_get_contents($credentialsPath); } else { // Request authorization from the user. $authUrl = $client->createAuthUrl(); printf("Open the following link in your browser:\\n%s\\n", $authUrl); print 'Enter verification code: '; $authCode = trim(fgets(STDIN)); // Exchange authorization code for an access token. $accessToken = $client->authenticate($authCode); // Store the credentials to disk. if(!file_exists(dirname($credentialsPath))) { mkdir(dirname($credentialsPath), 0700, true); } file_put_contents($credentialsPath, $accessToken); printf("Credentials saved to %s\\n", $credentialsPath); } $client->setAccessToken($accessToken); // Refresh the token if it's expired. if ($client->isAccessTokenExpired()) { $client->refreshToken($client->getRefreshToken()); file_put_contents($credentialsPath, $client->getAccessToken()); } return $client; } /** * Expands the home directory alias '~' to the full path. * @param string $path the path to expand. * @return string the expanded path. */ function expandHomeDirectory($path) { $homeDirectory = getenv('HOME'); if (empty($homeDirectory)) { $homeDirectory = getenv("HOMEDRIVE") . getenv("HOMEPATH"); } return str_replace('~', realpath($homeDirectory), $path); } // Get the API client and construct the service object. $client = getClient(); $service = new Google_Service_Drive($client); // Print the names and IDs for up to 10 files. $optParams = array( 'pageSize' => 10, 'fields' => "nextPageToken, files(id, name)" ); $results = $service->files->listFiles($optParams); if (count($results->getFiles()) == 0) { print "No files found.\\n"; } else { print "Files:\\n"; foreach ($results->getFiles() as $file) { printf("%s (%s)\\n", $file->getName(), $file->getId()); } } 

这将显示10个文件正如他们所说。

这是(在我看来)最好的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM