2015-04-14 3 views
-1

У меня возникла проблема при работе с API Google Диска. Я хочу разрешить публичному пользователю искать в моем списке файлов и загружать файлы на свой Google Диск.API Google Диска в PHP

Я создал ключ API на моей консоли разработчика и добавил его к следующему сценарию и попытался прочитать список моих файлов, но не работал. Он вернул «500 Internal Server Error». Мне что-то не хватает?

require_once 'google-api-php-client/src/Google/autoload.php'; 

$client = new Google_Client(); 
$client->setDeveloperKey("MY_API_KEY"); 
$client->addScope("https://www.googleapis.com/auth/drive"); 

$dr_service = new Google_Service_Drive($client); 

$dr_results = $dr_service->files->listFiles(array('maxResults' => 10)) 

Я пытался использовать ClientID (см следующий код), и он работает, но я не хочу, чтобы предложить пользователю войти в свою учетную запись Google, и я хочу, чтобы они сделали все, что на моем счете. Или как я могу вызвать oauth с моей учетной записью, не запрашивая пользователя?

session_start(); 

    require_once 'google-api-php-client/src/Google/autoload.php'; 

    $client = new Google_Client(); 

    // Get your credentials from the console 
    $client->setClientId('MY_CLIENT_ID'); 
    $client->setClientSecret('MY_CLIENT_SECRET'); 
    $client->setRedirectUri('MY_URL'); 
    $client->setScopes(array('https://www.googleapis.com/auth/drive')); 


    $authUrl = $client->createAuthUrl(); 

    if (isset($_GET['code'])) { 

     $client->authenticate($_GET['code']); 
     $_SESSION['token'] = $client->getAccessToken(); 
     header('Location: http://MY_URL'); 

    } 

    if (!$client->getAccessToken() && !isset($_SESSION['token'])) { 
     $authUrl = $client->createAuthUrl(); 
     print "<a class='login' href='$authUrl'>Connect Me!</a>"; 
    }   

    if (isset($_SESSION['token'])) { 
     print "<a class='logout' href='".$_SERVER['PHP_SELF']."?logout=1'>LogOut</a><br>"; 
     $client->setAccessToken($_SESSION['token']); 

     $service = new Google_Service_Drive($client); 
     var_dump($service->files->ListFiles()); 

    } 
+0

* "не работает" * является ужасным описанием проблемы. Чего вы ожидали? Что на самом деле произошло? Включили ли вы сообщение об ошибках и были ли какие-либо ошибки? – Phil

ответ

1

загрузить файлы из здесь google drive client в папке google_drive .Затем попробуйте этот код

включают три файла.

require 'google_drive/Google_Client.php'; 
require 'google_drive/contrib/Google_DriveService.php'; 
require 'google_drive/socialmedia_oauth_connect.php'; 

создать новый объект класса.

$client_gd = new Google_Client(); 
$service = new Google_DriveService($client_gd); 
$file=new Google_DriveFile(); 

набор маркеров доступа

if(isset($_GET['code'])) 
{ 
    $authCode = $_REQUEST['code']; 
    $accessToken = $client_gd->authenticate($authCode); 
    $_SESSION['access_token_gd']=$accessToken; 
    $client_gd->setAccessToken($accessToken); 
    $about = $service->about->get(); 
    $user=$about['permissionId']; 
    $_SESSION['gd_user']=$user; 
    $_SESSION['user_info_gd']=$about; 
    header('location:'.HOME.'?index_gd=1'); 

} 

аутентификации Google диск

$authUrl = $client_gd->createAuthUrl(); 
      //$clientid = $gdsettings->gdclient_id; 
      // $clientsec = $gdsettings->gdclient_secret; 
      $redirecturi = HOME.'index.php'; 
    $oauth = new socialmedia_oauth_connect(); 

      $oauth->provider="Google"; 
      global $apiConfig; 
      $oauth->client_id = $apiConfig['oauth2_client_id']; 
      $oauth->client_secret = $apiConfig['oauth2_client_secret']; 
      $oauth->scope="https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/drive.apps.readonly https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me https://docs.google.com/feeds/ https://docs.googleusercontent.com/ https://spreadsheets.google.com/feeds/"; 
      $oauth->redirect_uri = $apiConfig['oauth2_redirect_uri']; 
      $oauth->approval_prompt = "force"; 

      $oauth->Initialize(); 
      $oauth->Authorize(); 

получить файлы

$accessToken=$_SESSION['access_token_gd']; 
      $client_gd->setAccessToken($accessToken); 
      //print_r($client_gd->getAccessToken()); 
      //List of files 
      $arr = array(); 
      $files = $service->files->listFiles(); 
      $about = $service->about->get(); 

      $user=$about['permissionId']; 
      //$_SESSION['gd_user']=$user; 
      //$_SESSION['user_info_gd']=$about; 
      $drivefiles = $files["items"]; 
foreach($drivefiles as $divefl) 
    { 
echo $divefl['title']; 

} 

здесь полное описание вы можете прочитать google drive client integration

Смежные вопросы