2017-02-03 2 views
2

Je suis actuellement aux prises avec des problèmes d'accès à l'API google lorsque je personnifie un utilisateur.Comptes de service API PHP Google

je peux connecter en tant mais je suis que l'utilisateur obtiens une erreur où je suis présenté avec une erreur:

"error": { 
    "errors": [ 
     { 
      "domain": "global", 
      "reason": "appNotAuthorizedToFile", 
      "message": "The user has not granted the app <app id> write access to the file <file id>", 
      "locationType": "header", 
      "location": "Authorization" 
     } 
    ], 
} 

La résolution recommandée est d'utiliser Google Picker et obtenir l'utilisateur pour permettre à mon application pour accéder à ce fichier. Cependant, comme j'utilise un compte de service avec délégation de domaine et g-suite activé, je pensais que ce n'était pas nécessaire.

mon code php actuel est:

$client = new Google_Client(); 
$client->setApplicationName($appName); 
$client->setAuthConfig($credentials); 
$client->addScope($scopes); 
$client->setClientId($key); 
$client->useApplicationDefaultCredentials(); 
$client->setSubject($userTobe); 
$client->setAccessType('offline'); 

J'utilise putenv pour pousser mon service_account.json dans mon dossier. J'ai suivi le démarrage rapide comme suggéré. J'ai activé toutes les étendues requises dans la console de sécurité. Si je spécifie getRefreshTokenwithAssertion() je peux obtenir un access_token commençant par ya29. Cependant, cela présente toujours l'erreur ci-dessus.

Je ne sais pas où aller maintenant. Toute aide serait grandement appréciée.

Répondre

1

Quels champs d'application utilisez-vous? Veuillez vous assurer que vous définissez la portée d'autorisation du lecteur dans votre application: https://www.googleapis.com/auth/drive (Google_service_Drive :: DRIVE)

+0

J'ai manqué une portée dans la configuration, la pensée et le lecteur: fichier ferait la même. – dmurray

0

Le client et les étendues ont-ils été autorisés dans la console d'administration?

console d'administration => Sécurité => Paramètres avancés => gérer l'accès client API

+0

Oui, tout a été configuré et configuré. Je peux me connecter au compte comme moi mais je ne peux pas usurper l'identité de quelqu'un (ou au moins faire quoi que ce soit), dit l'application n'a pas la permission – dmurray