2017-03-10 1 views
0

Essayer de lister mes fichiers à partir d'un compte personnel en utilisant google/apiclient et ne peut pas réussir. Mes pasAccès sans autorisation à google drive api

  1. Service compte
  2. délégation domaine Activé
  3. Créé Téléchargé les touches (pour le compte de service, pas le délégué client)
  4. Utilisation client google api pour se connecter (code ci-dessous)

et la liste Initialiser

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(); 

En réponse je reçois:

Uncaught Google_Service_Exception: { "error": "unauthorized_client", "error_description": "Client is unauthorized to retrieve access tokens using this method." } La question principale est ce que je suis absent? Où puis-je préautoriser mon compte délégué? Ou existe-t-il un autre moyen de communiquer avec Drive Api sans confirmation de l'utilisateur?

Répondre

0

Vous ne pouvez pas activer domaine large délégation (DWD) pour @ gmail.com comptes parce que vous n'êtes pas le propriétaire du domaine gmail.com. DWD n'est possible que pour les comptes G Suite. Pour les comptes gmail.com, vous devez adopter une autre approche. Je vous recommande fortement d'aller sur this documentation pour plus de détails. En résumé, je ne pense pas qu'il soit possible de le faire sans le consentement de l'utilisateur. En résumé, je ne pense pas qu'il soit possible de le faire sans le consentement de l'utilisateur. J'espère que cette information aide.