[英]How do you use Google Drive API to permanently authorize an user account to upload files to your Drive?
[英]how to use google drive with api server
我正在嘗試將文件發送到Google驅動器
我想使用示例來獲取帶有“ ID客戶端OAuth 2.0”的文件的列表
一旦我使用了“ tokenID”,它就只能工作一次,我想這就是它應該工作的方式,
我想使用API驅動器僅在我的帳戶上獲取文件
所以我要在后端服務器中使用
但是console.developers.google中還有服務器的另一種API授權,我想這對我的想法很有幫助,但不知道如何使用它
這是我談論使用令牌的另一個示例
我將代碼設置為可離線訪問的新更新注:僅以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>";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.