欢迎访问宙启技术站
智能推送

使用Python的GoogleAuthOauthlib流程-InstalledAppFlow访问GoogleAPI

发布时间:2023-12-13 08:29:06

在使用Python访问GoogleAPI之前,首先需要进行身份验证。Google提供了OAuth2授权流程来进行用户身份验证和授权访问GoogleAPI。这里我们将使用Google的google-auth-oauthlib库来实现身份验证流程,并在此基础上访问Google Drive API为例来演示使用方法。

首先,确保已经安装了google-auth-oauthlib库。可以通过以下命令来安装它:

pip install google-auth-oauthlib

接下来,我们需要创建一个Google Cloud项目和创建OAuth2凭证。

1. 在[Google Cloud Console](https://console.cloud.google.com/)上创建一个新项目。

2. 在项目概览界面中,点击左上角的导航菜单,选择“API和服务” > “凭证”。

3. 在“凭证”页面中,点击“创建凭证”按钮,选择“OAuth客户端ID”。

4. 在“应用类型”中选择“桌面应用”。

5. 填写其他信息,并点击“创建”按钮。

6. 在凭证页面中可以看到刚刚创建的凭证的“客户端ID”和“客户端密钥”,将相应的信息记录下来。

现在我们开始使用google-auth-oauthlib进行身份验证和访问Google Drive API。

首先,让我们创建一个Python文件,并导入需要的库:

from google_auth_oauthlib.flow import InstalledAppFlow
import googleapiclient.discovery

通过InstalledAppFlow类创建一个流程对象,并填写相应的ClientId和ClientSecret:

flow = InstalledAppFlow.from_client_secrets_file(
    'credentials.json',
    scopes=['https://www.googleapis.com/auth/drive']
)

credentials.json是你在上一步中创建的凭证信息的JSON文件,它包含了你的ClientId和ClientSecret。

接下来,让我们进行身份验证:

credentials = flow.run_local_server(port=0)

上述代码会启动一个本地服务器,然后打开一个浏览器窗口用于用户验证。验证成功后,会将验证的凭证返回到credentials变量中。在第一次验证成功后,后续运行代码时将不再需要进行再次验证。

现在,让我们使用验证后的凭证来访问Google Drive API。

drive_service = googleapiclient.discovery.build('drive', 'v3', credentials=credentials)
results = drive_service.files().list(pageSize=10).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']))

上述代码创建了一个drive_service对象用于调用Google Drive API,并使用凭证进行身份验证。然后,我们调用files().list()方法来列出Google Drive上的文件,并打印文件名和文件ID。

这样,我们就完成了使用Python的google-auth-oauthlib库进行身份验证并访问Google Drive API的流程。

需要注意的是,以上代码适用于通过**应用程序**访问Google Drive API。如果要通过**用户的账号**访问API,可以将credentials.json文件替换为名为token.json的文件。

希望本文可以帮助你理解和使用google-auth-oauthlib库进行身份验证和访问GoogleAPI。