我正在尝试制作一个应用程序,在其中显示我的谷歌驱动器文件夹中的文件和文件夹,因此我转到 google apis 并使用了我在下面的页面上找到的代码
因为我没想到它只是让我登录到我的驱动器,然后它返回给我一个错误,我正在为其提供照片 这是返回的错误 它这么说
消息='client_secret' 来源=D:\Study\Computer Science\G10\Paython 第二学期\python consol app\python consol app\python_consol_app.py 堆栈跟踪: 文件“D:\Study\Computer Science\G10\Paython 第二学期\python consol app\python consol app\python_consol_app.py”,第 48 行,位于 主要()
我设法跳过此错误并重命名 json 文件,解决此错误后却发现另一个错误:
Message=授权用户信息的格式不正确,缺少字段 client_secret、client_id、refresh_token。 来源=D:\Study\Computer Science\G10\Paython 第二学期\python consol app\python consol app\python_consol_app.py 堆栈跟踪: 文件“D:\Study\Computer Science\G10\Paython 第二学期\python consol app\python consol app\python_consol_app.py”,第 48 行,位于 主要()
所以我想知道我应该如何解决这样的问题 另外,如果我的应用程序可以运行到每个文件夹和子文件夹
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
def main():
"""Shows basic usage of the Drive v3 API.
Prints the names and ids of the first 10 files the user has access to.
"""
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
service = build('drive', 'v3', credentials=creds)
results = service.files().list(
pageSize=10, fields="nextPageToken, files(id, name)").execute()
items = results.get('files', [])
if not items:
print('No files found.')
else:
print('Files:')
for item in items:
print(u'{0} ({1})'.format(item['name'], item['id']))
if __name__ == '__main__':
main()
首先要事。您的凭据似乎有问题。我会再次从快速入门下载credentials 文件。然后,删除工作目录中生成的
token
文件。
如果您想更深入,您可以创建一个GCP项目,然后启用Google API以及生成凭证,但如果您不想要,则不需要这种方法。
快速启动运行后,您就可以专注于您的任务。要显示云端硬盘中的文件,可以使用 Files: list 方法,该方法可返回当前用户的“我的云端硬盘”中的所有文件和文件夹。要执行特定搜索,您可以使用不同的参数,但最重要的是
query
。您可以阅读本指南以获取一些使用示例和进一步说明。
确保将下载的凭据文件重命名为
credentials.json
并且启用相应的 google api(驱动器,..)
第一: 启用API 在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。您可以在单个 Google Cloud 项目中启用一个或多个 API。 在 Google Cloud 控制台中,启用 Gmail API。 从这里开始
第二个: 授权桌面应用程序的凭据 要作为最终用户进行身份验证并访问应用程序中的用户数据,您需要创建一个或多个 OAuth 2.0 客户端 ID。客户端 ID 用于向 Google 的 OAuth 服务器标识单个应用程序。如果您的应用程序在多个平台上运行,则必须为每个平台创建单独的客户端 ID。 在 Google Cloud 控制台中,转到菜单菜单 > API 和服务 > 凭据。 前往凭证
单击创建凭据 > OAuth 客户端 ID。 单击应用程序类型 > 桌面应用程序。 在名称字段中,输入凭据的名称。此名称仅显示在 Google Cloud 控制台中。 单击“创建”。将出现 OAuth 客户端创建屏幕,其中显示您的新客户端 ID 和客户端密码。 单击“确定”。新创建的凭据显示在 OAuth 2.0 客户端 ID 下。
最后 下载 JSON 文件并将文件重命名为credentials.json,然后将文件移动到您的工作目录。
我的问题解决了
我的解决方案是退出 Google,然后再次执行身份验证流程。
注销之前,我看到
The authentication flow has completed. You may close this window.
注销后,系统再次提示我授权“范围”中的 API,这解决了问题。