web-dev-qa-db-ja.com

サービスアカウントの認証情報を使用してファイルをGoogleドライブにアップロードする方法

Googleサービスアカウントの認証情報を使用してファイルをGoogleドライブにアップロードしたかったのです。

Google Developer ConsoleからJSONファイルとして認証情報をダウンロードし、そこから認証情報を取得しました。

これが私のコードスニペットです。

google_drive_service = discovery.build('drive', 'v3',
          credentials=ServiceAccountCredentials.from_json_keyfile_name
                           os.path.join(settings.CLIENT_PATH, settings.CLIENT_SECRET_FILE),
                           scopes=settings.SCOPES))


media = MediaFileUpload(tmp_file_path, mimetype=tmp_file.content_type, resumable=True)
google_drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()

コードは実行され、エラーは発生しませんが、Googleドライブアカウントにアップロードされたファイルが見つかりません。ファイルがアップロードされない理由がわかりません。この問題を解決するのを手伝ってくれませんか?

6
Snipper03

あなたが抱えている問題は、サービスアカウントがあなたではないということです。個人のドライブアカウントではなく、サービスアカウントのGoogleドライブアカウントにファイルをアップロードしました。 ファイルリスト を実行してみてください。ファイルが表示されます。

提案。サービスアカウントのメールアドレスを取得し、他のユーザーと共有するのと同じように、個人のGoogleドライブアカウントのディレクトリを共有します。これで、サービスアカウントをこのディレクトリにアップロードできるようになります。ファイルをアップロードした後、ファイルへのアクセス許可を設定して、個人のドライブアカウントにファイルへのアクセスを許可してください。ファイルがアップロードされると、サービスアカウントが所有します。

11
DaImTo