2015-09-19 4 views
2

я пытаюсь получить файлы на Google Дискекак использовать Google диск с API сервером

я выяснить, чтобы использовать пример, чтобы получить список файлов с с «ID клиента OAuth 2,0»

раз я взять на себя «tokenID» она работает только один раз, и я думаю, что это, как это предполагают, чтобы работать,

я хочу использовать диск API, чтобы получить файлы только на моем счету

так я буду использование в Backend сервере

однако есть другой тип авторизации API для сервера в console.developers.google и я думаю, что будет полезно для моей идеи, но не знаете, как использовать его

вот другой пример я говорить о с помощью маркеров

нового обновления на коде я установить автономный доступ Примечания: используется печенье только для примера и тестирование

нового пробл эм работать в первый раз, когда я затем обновить снова просто показать код без какого-либо результата или ошибки

<?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>"; 
} 
+0

«tokenID» вы упомянули, которые вы имеете в виду «маркер доступа»? Маркер доступа обычно истекает через час. Можете ли вы загрузить файл один раз и в следующий раз, когда он сработает? какой код он показывает? – Gerardo

+0

@ Герардо, он должен работать в течение одного часа, но он работает только один раз, этот код показывает список файлов на Google Диске, первый раз с работой с токеном, второй раз я попытался с тем же токеном, он ничего не показывает, даже ошибка – medhamza7

+0

@Gerardo у меня пропала ошибка php – medhamza7

ответ

0

я выяснить мою проблему -i не заметил, что моя конфигурация PHP не показывает ошибку -i было спутать между кодом вы получаете в редиректа ссылку и «маркер доступа» я думал, было то же самое

здесь код

<?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>"; 
} 
Смежные вопросы