2017-03-10 4 views
0

Der Versuch, meine Dateien aus dem persönlichen Konto mit google/apiclient aufzulisten und kann nicht gelingen. Meine SchritteAuthless Zugriff auf Google Drive api

  1. Erstellt Dienstkonto
  2. Aktiviert Domain Delegation
  3. heruntergeladen die Tasten (für das Dienstkonto, nicht der Kunde Delegaten)
  4. Verwendung von Google-API-Client (Code unten) zu verbinden

Initialisation und Auflistung

private function _initClient(string $keyLocation) 
{ 
    if (empty($keyLocation) || !file_exists($keyLocation)) 
    { 
     throw new \Exception("Missing google certificate file"); 
    } 

    $client = new \Google_Client(); 
    $client->setApplicationName('My App'); 
    $client->useApplicationDefaultCredentials(); 
    $client->setSubject("[email protected]"); 
    $client->setScopes([ 
     'https://www.googleapis.com/auth/drive', 
    ]); 
    return $client; 
} 

public function listDirectories() 
{ 
    $drive = new \Google_Service_Drive($this->client); 
    $files = $drive->files->listFiles([ 
     'corpus' => 'user', 
     'spaces' => 'drive' 
    ]); 


    var_dump($files); 

} 


require_once 'vendor/autoload.php'; 
$key = __DIR__.DIRECTORY_SEPARATOR.'client_id.json'; 
putenv('GOOGLE_APPLICATION_CREDENTIALS='.$key); 
$t = new Myclass($key); 
$t->listDirectories(); 
01 Ich

Als Antwort erhalten:

Uncaught Google_Service_Exception: { "error": "unauthorized_client", "error_description": "Client is unauthorized to retrieve access tokens using this method." } So ist die wichtigste Frage ist, was ich bin fehlt? Wo kann ich meinen delegierten Account vorautorisieren? Oder gibt es eine andere Möglichkeit, ohne Benutzerbestätigung mit Drive Api zu kommunizieren?

Antwort

0

Sie können keine Domain breite Delegation (DWD) für @ gmail.com Konten aktivieren, da Sie nicht der Eigentümer der Domain gmail.com sind. DWD ist nur für G Suite-Konten möglich. Für gmail.com Konten müssen Sie einen anderen Ansatz verwenden. Ich empfehle dringend, über für weitere Details zu gehen.

Zusammengefasst glaube ich nicht, dass dies ohne Zustimmung des Benutzers möglich ist. Ich hoffe diese Information hilft.