Server-side Google API service request yields googleapiclient.errors.HttpError: <HttpError 404
Server-side Google API service request yields googleapiclient.errors.HttpError: <HttpError 404
我已经创建了服务帐户凭证,运行我在 AWS 实例上的代码。
代码是:
from google.oauth2 import service_account
SCOPES = [ 'https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive' ]
SERVICE_ACCOUNT_FILE = 'serviceAccount.json'
APPLICATION_NAME = 'app name'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
drive_service = discovery.build('drive', 'v2', credentials=credentials)
settings = configparser.ConfigParser()
settings._interpolation = configparser.ExtendedInterpolation()
settings.read('caremarkets.ini')
origin_file_id = settings.get('GoogleSheetParams',''+manualType+'Manual2018')
folderId = settings.get('GoogleSheetParams',''+manualType+'FolderID')
timeStamp = '{:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now())
title = manualType+ " Userid: ( "+str(user_id)+" ) "+timeStamp
fileObject= drive_service.files().copy(
fileId=origin_file_id, body={"parents": [{"kind": "drive#fileLink",
"id": folderId}], 'title': title}).execute()
然而这是我的错误:第 41 行是上面代码片段中的服务调用:
fileObject= drive_service.files().copy(
fileId=origin_file_id, body={"parents": [{"kind": "drive#fileLink",
"id": folderId}], 'title': title}).execute()
File "/home/ubuntu/dev_deploy/copy_master_spreadsheet_to_user_slave.py", line 41, in copy_master_spreadsheet_to_user_slave
"id": folderId}], 'title': title}).execute()
File "/usr/local/lib/python3.5/dist-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/googleapiclient/http.py", line 844, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 404 when requesting https://www.googleapis.com/drive/v2/files/1lNcqvQACH6DOBl3uQywJO1A6Iy6va7YdSrZiobMaOj0/copy?alt=json returned "File not found: 1lNcqvQACH6DOBl3uQywJO1A6Iy6va7YdSrZiobMaOj0">
请注意,以上代码在我的机器上本地运行良好。在我更改代码以使用服务帐户而不是通常的 client_secret.json
之后才得到这个
关于服务帐户密钥的信息:
Service account name Service account ID Key ID Key creation date Options
SACxxxxxxs sacxxxxxxs@drivesheets-197604.iam.gserviceaccount.com bf287f0baa29d4fa5f6b98aacf03b8bff13b0447 Mar 15, 2018
如能提供帮助,非常感谢
找不到文件仅表示您提供的文件 ID 不存在,或者与您进行身份验证的用户无权访问它。
获取服务帐户电子邮件地址并转到网络版 Google 驱动器与服务帐户共享文件。然后它将可以访问相关文件。
我已经创建了服务帐户凭证,运行我在 AWS 实例上的代码。 代码是:
from google.oauth2 import service_account
SCOPES = [ 'https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive' ]
SERVICE_ACCOUNT_FILE = 'serviceAccount.json'
APPLICATION_NAME = 'app name'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
drive_service = discovery.build('drive', 'v2', credentials=credentials)
settings = configparser.ConfigParser()
settings._interpolation = configparser.ExtendedInterpolation()
settings.read('caremarkets.ini')
origin_file_id = settings.get('GoogleSheetParams',''+manualType+'Manual2018')
folderId = settings.get('GoogleSheetParams',''+manualType+'FolderID')
timeStamp = '{:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now())
title = manualType+ " Userid: ( "+str(user_id)+" ) "+timeStamp
fileObject= drive_service.files().copy(
fileId=origin_file_id, body={"parents": [{"kind": "drive#fileLink",
"id": folderId}], 'title': title}).execute()
然而这是我的错误:第 41 行是上面代码片段中的服务调用:
fileObject= drive_service.files().copy(
fileId=origin_file_id, body={"parents": [{"kind": "drive#fileLink",
"id": folderId}], 'title': title}).execute()
File "/home/ubuntu/dev_deploy/copy_master_spreadsheet_to_user_slave.py", line 41, in copy_master_spreadsheet_to_user_slave
"id": folderId}], 'title': title}).execute()
File "/usr/local/lib/python3.5/dist-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/googleapiclient/http.py", line 844, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 404 when requesting https://www.googleapis.com/drive/v2/files/1lNcqvQACH6DOBl3uQywJO1A6Iy6va7YdSrZiobMaOj0/copy?alt=json returned "File not found: 1lNcqvQACH6DOBl3uQywJO1A6Iy6va7YdSrZiobMaOj0">
请注意,以上代码在我的机器上本地运行良好。在我更改代码以使用服务帐户而不是通常的 client_secret.json
之后才得到这个关于服务帐户密钥的信息:
Service account name Service account ID Key ID Key creation date Options
SACxxxxxxs sacxxxxxxs@drivesheets-197604.iam.gserviceaccount.com bf287f0baa29d4fa5f6b98aacf03b8bff13b0447 Mar 15, 2018
如能提供帮助,非常感谢
找不到文件仅表示您提供的文件 ID 不存在,或者与您进行身份验证的用户无权访问它。
获取服务帐户电子邮件地址并转到网络版 Google 驱动器与服务帐户共享文件。然后它将可以访问相关文件。