web-dev-qa-db-fra.com

Client API Google Drive (Python): autorisation insuffisante pour les fichiers (). Insert ()

J'essaye d'obtenir un simple Python uploader Google Drive fonctionne. J'ai créé un projet dans la console développeur, activé l'API Drive et ajouté un OAuth 2.0 ID client (type d'application Autre).

Je peux voir l'application répertoriée dans les paramètres de Google Drive -> Gérer les applications et je peux exécuter avec succès de nombreuses opérations fournies par le client API Python Drive de Google. Files () .insert () mais échoue avec:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart&convert=false&useContentAsIndexableText=false&alt=json returned "Insufficient Permission">

C'est pour une insertion dans un répertoire que j'ai rendu accessible en écriture à tout le monde, comme vu ci-dessous:

credentials = get_credentials ()
http = credentials.authorize (httplib2.Http ())
service = discovery.build ('drive', 'v2', http=http)

PARENT_ID="0B1gLgXwTiUzlfmo0UGVsZ1NWdW1nZG9OcENNYkJua2E1d0pqWE14TjFyc2hVMHdEU1h5czQ"

perms = service.permissions().list(fileId=PARENT_ID).execute()

print ("PERMISSIONS:")
for perm in perms["items"]:
    for p in perm:
        print (p, perm[p])

print

parent = {
    "isRoot": False,
    "kind": "drive#parentReference",
    "id": PARENT_ID
}

service.files ().insert (
    body = {"parents" : [parent]},
    media_body='./test.txt',
    convert=False,
    useContentAsIndexableText=False
).execute ()

Qui répertorie l'autorisation comme:

(u'withLink', True)
(u'kind', u'drive#permission')
(u'etag', u'"F-w0rsCIWtQP8RGyv_V1DlKfcRk/icwHkDdfUYuMzqZrUsVIyvu85K8"')
(u'role', u'writer')
(u'type', u'anyone')
(u'id', u'anyoneWithLink')
(u'selfLink', u'https://www.googleapis.com/drive/v2/files/0B1gLgXwTiUzlfmo0UGVsZ1NWdW1nZG9OcENNYkJua2E1d0pqWE14TjFyc2hVMHdEU1h5czQ/permissions/anyoneWithLink')

Quelqu'un peut-il m'indiquer à quelle autorisation je manque, s'il vous plaît?

14
Gwen Ives
20
DaImTo

Si vous modifiez ces étendues ou autorisations, essayez de supprimer le fichier associé aux informations d'identification précédemment enregistrées ou le cache du navigateur, le cas échéant.

6

Comme conseillé par @DalmTo, le problème était une portée Auth incorrecte dans:

 flow_from_clientsecrets()
1
Gwen Ives