0

Problème: J'ai créé un compte de service pour interagir avec mon disque Google Org & Fichiers de feuille de calcul - Je parviens à créer une session avec l'API google drive. Cependant, les seuls fichiers que j'ai accès est ce passe-partout:Impossible de voir les fichiers gSuite avec le compte de service

=> [# < Google Drive :: id File = titre "aSdsefooovjTnulaRlclbarrr" = "Mise en route">]

Quel niveau de autorisations pensez-vous que je suis manquant? Ma seule pensée à gauche est qu'il existe d'autres permissions de haut niveau qui cachent des fichiers en dehors d'une organisation .. Même si le compte de service est partagé sur un fichier explicitement? Il dit cela quand je partage avec le compte de service si c'est une indication. enter image description here

Peut être lié à l'image suivante de ce document?

https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority

enter image description here

étapes que je l'ai déjà passé par ..

1) Je créé un compte de service avec une délégation large domaine, et le statut d'édition du projet.

2) J'ai invité ce service Courriels aux feuilles je le veux d'avoir accès API à

3) J'avais un administrateur gSuite de mon org a ajouté le client_id de ce compte de service à la/Sécurité/GERER accès au client API .. avec les champs d'application ->https://www.googleapis.com/auth/drive, https://spreadsheets.google.com/feeds

Ont essayé toutes les combinaisons que je peux trouver dans tous les docs/tutoriels. Voici mon code de connexion, basé sur https://www.twilio.com/blog/2017/03/google-spreadsheets-ruby.html. J'ai essayé de passer les étendues dans le client_secret.json. Outil essayé avec des rôles d'iam pour le compte de service.

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

{ 
    "type": "service_account", 
    "project_id": "gdrive-1231233", 
    "private_key_id": "food87c0bar16da9bfoooooo677bar", 
    "private_key": "-----BEGIN PRIVATE KEY-----\nsssEIEvQfooobarrrytyeho=\n-----END PRIVATE KEY-----\n", 
    "client_email": "[email protected]", 
    "client_id": "foo40990211bar", 
    "auth_uri": "https://accounts.google.com/o/oauth2/auth", 
    "token_uri": "https://accounts.google.com/o/oauth2/token", 
    "auth_provider_foox_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 
    "client_foox_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/servicebot%40gdrive-foobar.iam.gserviceaccount.com" 
} 

#<GoogleDrive::Session:0v3fc6c3e25061> 

Répondre

0

tourne donc la seule méthode que je pouvais utiliser pour trouver une feuille de calcul explicite était spreadsheet_by_url - .files .spreadsheets .find_by_guid, etc .. tous retournés nul. mais la recherche par url direct a renvoyé le dossier et permettez-moi de lire/écrire.

session = GoogleDrive::Session.from_service_account_key("client_secret.json") 
session.spreadsheet_by_url(ENV['GOOGLE_DATA_DUMP_URL']) 
worksheet = spreadsheet.worksheets[0]