Google api php client 如何在api服务器上使用google drive

Google api php client 如何在api服务器上使用google drive,google-api-php-client,google-drive-realtime-api,Google Api Php Client,Google Drive Realtime Api,我正在尝试将文件发送到google drive 我想使用中的示例来获取文件列表 使用“ID客户端OAuth 2.0” 一旦我接受了“tokenID”,它只工作一次,我想这就是它应该如何工作的 我想使用API驱动器只获取我帐户上的文件 所以我将在后端服务器中使用 但是,对于服务器 在console.developers.google中,我想这会对我的想法有所帮助,但我不知道如何使用它 下面是我谈到的使用令牌的另一个例子 新增更新代码 我将访问设置为脱机 注: 使用cookie仅作为示例和测试 新问

我正在尝试将文件发送到google drive

我想使用中的示例来获取文件列表 使用“ID客户端OAuth 2.0”

一旦我接受了“tokenID”,它只工作一次,我想这就是它应该如何工作的

我想使用API驱动器只获取我帐户上的文件

所以我将在后端服务器中使用

但是,对于服务器 在console.developers.google中,我想这会对我的想法有所帮助,但我不知道如何使用它

下面是我谈到的使用令牌的另一个例子

新增更新代码 我将访问设置为脱机 注: 使用cookie仅作为示例和测试

新问题第一次出现,然后当我再次刷新时,它只显示代码 没有任何结果或错误

<?php

function retrieveAllFiles($service) {
  $result = array();
  $pageToken = NULL;

  do {
    try {
      $parameters = array();
      if ($pageToken) {
        $parameters['pageToken'] = $pageToken;
      }
      $files = $service->files->listFiles($parameters);

      $result = array_merge($result, $files->getItems());
      $pageToken = $files->getNextPageToken();
    } catch (Exception $e) {
      print "An error occurred: " . $e->getMessage();
      $pageToken = NULL;
    }
  } while ($pageToken);
  return $result;
}
include_once "templates/base.php";
session_start();
$client_id = '';
$client_secret = '';
$redirect_uri = '{link}';
require_once realpath(dirname(__FILE__) . '/../src/Google/autoload.php');
$client = new Google_Client();
//4/N8jf5YPn4-BwY2J5v30gL5aM-78z2IL7QZMN_TV0odk#
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setAccessType('offline');
$client->addScope("https://www.googleapis.com/auth/drive");
$client->setDeveloperKey("{Api server code here}");
if(isset($_COOKIE['code'])||isset($_GET['code']))
{
  if(isset($_GET['code'])) {
    setcookie('code',$_GET['code']);
    echo"Saved code";
  }
  echo $_COOKIE['code']."<br/>";
  $refreshToken=$_COOKIE['code'];
  $client->authenticate($refreshToken);
  if($client->isAccessTokenExpired()) {
    $client->refreshToken($refreshToken);
    setcookie('code',$client->getAccessToken());
    echo "New token: ".$_COOKIE['code']."<br/>";
  }
  $service = new Google_Service_Drive($client);

  var_dump(retrieveAllFiles($service));
} else
{

  $authUrl = $client->createAuthUrl();
  echo "<a href='$authUrl'>get code</a>";
}
我解决了我的问题
-我没有注意到我的php配置没有显示错误
-我混淆了重定向链接中的代码和我认为相同的“访问令牌”

这是密码

<?php

function retrieveAllFiles($service) {
  $result = array();
  $pageToken = NULL;

  do {
    try {
      $parameters = array();
      if ($pageToken) {
        $parameters['pageToken'] = $pageToken;
      }
      $files = $service->files->listFiles($parameters);

      $result = array_merge($result, $files->getItems());
      $pageToken = $files->getNextPageToken();
    } catch (Exception $e) {
      print "An error occurred: " . $e->getMessage();
      $pageToken = NULL;
    }
  } while ($pageToken);
  return $result;
}
include_once "templates/base.php";
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
session_start();
$client_id = '';
$client_secret = '';
$redirect_uri = '';
require_once realpath(dirname(__FILE__) . '/../src/Google/autoload.php');
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setAccessType('offline');
$client->addScope("https://www.googleapis.com/auth/drive");
if(isset($_GET['code']))
{
  $code=$_GET['code'];
  $client->authenticate($code);
  $_SESSION['access_token'] = $client->getAccessToken();
}
if(isset($_SESSION['access_token']))
{
  echo " token";
  var_dump($_SESSION['access_token']);
  $client->setAccessToken($_SESSION['access_token']);
  if($client->isAccessTokenExpired()) {
    $client->refreshToken(json_decode($_SESSION['access_token'])->refresh_token);
    $_SESSION['access_token']=$client->getAccessToken();
    echo "new token";
    var_dump($_SESSION['access_token']);
  }
  $service = new Google_Service_Drive($client);

  var_dump(retrieveAllFiles($service));
} else
{

  $authUrl = $client->createAuthUrl();
  echo "<a href='$authUrl'>get code</a>";
}

您提到的“令牌ID”,您是指“访问令牌”吗?访问令牌通常在一小时后过期。你能上传一个文件一次,下一次失败吗?它显示的代码是什么?@Gerardo它应该工作一个小时,但对,它只工作一次,这个代码显示google drive上的文件列表,第一次使用token work,第二次使用相同的token,它甚至没有显示任何内容error@Gerardo我错过了php错误