web-dev-qa-db-ja.com

Google Drive APIクライアント(Python):files()。insert()の権限が不十分です

簡単なPython Googleドライブアップローダーを機能させようとしています。デベロッパーコンソールでプロジェクトを作成し、Drive APIを有効にして、OAuth 2.0クライアントID(アプリケーションタイプOther)。

Googleドライブの[設定]-> [アプリの管理]にリストされているアプリケーションを確認でき、Python GoogleのDrive APIクライアントから提供される多くの操作を正常に実行できます。ただし、ファイル().insert()は失敗しますと:

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">

これは、以下に示すように、私が全員に書き込み可能にしたディレクトリへの挿入用です。

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

これは権限を次のようにリストします:

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

誰が私にどの許可を欠いているのか教えてもらえますか?

14
Gwen Ives
20
DaImTo

これらのスコープまたは権限を変更する場合は、以前に保存した資格情報関連のファイルまたはブラウザキャッシュがあれば削除してみてください。

6

@DalmToの助言によると、問題は以下のAuthスコープが正しくないことでした。

 flow_from_clientsecrets()
1
Gwen Ives