2017-05-12 1 views
0

Ich versuche, ein CMS zu erstellen, das ein Google Drive-Konto als Speicher verwendet und seinen Inhalt, Dateien/Ordner anzeigt, und der Benutzer kann diese Dateien über meine verwalten Eckige FrontEnd. Ich bin neu in der Google-API und dachte, ich versuche es, aber ich stecke fest.PHP google-api-php-client immer Benutzer Dateistruktur

Ich benutze diese Bibliothek, um es in PHP auf meinem lokalen xampp arbeiten zu lassen.

Git Google PHP API

ich versuche, eine Antwort in einer .php-Testdatei der Benutzer Dateien wie diese zu bekommen:

/************************************************* 
* Ensure you've downloaded your oauth credentials 
************************************************/ 
if (!$oauth_credentials = getOAuthCredentialsFile()) 
{ 
    echo missingOAuth2CredentialsWarning(); 
    return; 
} 

/************************************************ 
* The redirect URI is to the current page, e.g: 
* http://localhost:8080/simple-file-upload.php 
************************************************/ 
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; 

$client = new Google_Client(); 
$client->setAuthConfig($oauth_credentials); 
$client->setRedirectUri($redirect_uri); 
$client->addScope(Google_Service_Drive::DRIVE); 
$service = new Google_Service_Drive($client); 


$pageToken = null; 
do { 
    $response = $service->files->listFiles(); 

    foreach ($response->files as $file) { 
     printf("Found file: %s (%s)\n", $file->name, $file->id); 
    } 
} while ($pageToken != null); 

Aber das wirft Fatal error: Uncaught Google_Service_Exception: { "Fehler": { "Fehler": [{ "domain": "usageLimits", "Grund": "dailyLimitExceededUnreg", "message": "Tageslimit für nicht authentifizierte Nutzung überschritten Fortsetzung Verwendung erfordert eine Anmeldung.",

ich habe die Beispiele das Git Repository zu arbeiten. Aber ich fand kein nützliches Beispiel, um nur die Dateistruktur der Benutzer abzufragen.

+0

Ich habe diesen Fehler vor und ich t passiert, wenn die Anfrage, die ich sende, nicht authentifiziert ist. – Morfinismo

+0

Es gibt mehrere Authentifizierungen (OAuth, Service Accounts) innerhalb dieser Bibliothek, was ist für eine solche Anfrage erforderlich, oder spielt es überhaupt eine Rolle? Wenn ich das Upload-Beispiel versuche, werde ich aufgefordert, mich anzumelden und kann eine Datei erfolgreich auf mein Laufwerk hochladen. Wenn ich den Authentifizierungsteil in diese Abfragedatei kopiere, funktioniert das nicht. – AHahn

Antwort

1

fand ich, was ich in meiner Testanwendung fehlte: Festlegen von Zugriffstoken wie diese ->

if (isset($_GET['code'])) 
{ 
    $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); 
    $client->setAccessToken($token); //really needed? we also set it when the session is not empty 

    // store in the session also 
    $_SESSION['upload_token'] = $token; 

    // redirect back to the example 
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
} 

// set the access token as part of the client 
if (!empty($_SESSION['upload_token'])) 
{ 
    $client->setAccessToken($_SESSION['upload_token']); 
    if ($client->isAccessTokenExpired()) 
    { 
     unset($_SESSION['upload_token']); 
    } 
} 
else 
{ 
    $authUrl = $client->createAuthUrl(); 
} 

einen Dienst mit dem Kunden erstellen wie ->

$service = new Google_Service_Drive($client); 

Und schließlich die wichtiger Teil: Zugriff nur, wenn wir eingeloggt sind

/************************************************ 
* If we're signed in then lets try to do something 
************************************************/ 
if ($client->getAccessToken()) 
{ 
    $response = $service->files->listFiles(); 

    foreach ($response->files as $file) 
    { 
     echo "<div>" . $file->name . " - " . $file->id . "</div><br>"; 
    } 
}