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

Python中GoogleAuthOauthlib流程-InstalledAppFlow的基本用法

发布时间:2023-12-13 08:33:59

Google OAuth是一种授权机制,用于通过Google账户授权访问用户的数据。oauthlib是一个Python库,提供了OAuth的实现。google-auth-oauthlib是基于oauthlib的Google OAuth库。其中,InstalledAppFlow是一个流程类,用于创建授权流程。

下面是InstalledAppFlow的基本用法及使用示例:

步骤1:安装库

首先,我们需要安装google-auth-oauthlib库。可以使用以下命令进行安装:

pip install google-auth-oauthlib

步骤2:导入库

from google_auth_oauthlib.flow import InstalledAppFlow

步骤3:设置授权范围

授权范围是指用户授权时可以访问的数据。根据需求设置需要的授权范围。

SCOPES = ['https://www.googleapis.com/auth/calendar']

步骤4:创建授权流程

flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)

from_client_secrets_file方法从指定的JSON文件中读取客户端凭据,该凭据用于将应用程序与Google API连接。文件中包含了客户端ID、客户端密钥等信息。

步骤5:获取授权链接

auth_url, _ = flow.authorization_url(prompt='consent')

authorization_url方法返回授权链接,用户需要点击该链接并授权应用程序访问其数据。

步骤6:处理授权回调

flow.fetch_token(code=authorization_code)

当用户授权后,会重定向到授权回调URL,并附带授权码。应用程序需要使用授权码来获取访问令牌。

步骤7:访问用户数据

from googleapiclient.discovery import build

service = build('calendar', 'v3', credentials=flow.credentials)

使用build方法创建一个与指定API的连接。credentials参数接受一个Credentials对象,其中包含访问令牌等信息。然后,通过该连接进行具体的API调用。

完整示例代码如下:

from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build

SCOPES = ['https://www.googleapis.com/auth/calendar']

flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
auth_url, _ = flow.authorization_url(prompt='consent')
print('请点击以下链接授权应用程序:', auth_url)

authorization_code = input('请输入授权码:')
flow.fetch_token(code=authorization_code)

service = build('calendar', 'v3', credentials=flow.credentials)
events_result = service.events().list(calendarId='primary', maxResults=10, singleEvents=True,
                                      orderBy='startTime').execute()
events = events_result.get('items', [])

if not events:
    print('没有找到任何事件.')
else:
    print('最近10个事件:')
    for event in events:
        start = event['start'].get('dateTime', event['start'].get('date'))
        print(start, event['summary'])

上述代码需要一个名为credentials.json的JSON文件作为输入,该文件包含了客户端ID、客户端密钥等信息。

综上所述,以上是InstalledAppFlow的基本用法及一个使用示例。你可以根据实际需求修改代码,连接不同的Google API,访问不同的用户数据。