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

简单入门:Python中的GoogleAuthOauthlib流程-InstalledAppFlow

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

在Python中使用Google OAuth2.0进行身份验证可以实现用户使用Google账号登录你的应用程序。Google OAuth2.0的流程可以分为三个步骤:获取授权链接、获取授权码、获取令牌和访问凭证。

首先,你需要在Google API控制台中创建一个项目并启用所需的API。然后,在凭据页面中创建凭据,选择“OAuth客户端ID”并填写所需的信息,例如应用程序名称、重定向URI等。

接下来,我们使用Google提供的oauthlib库来简化OAuth2.0流程。首先,你需要安装oauthlib库:pip install google-auth-oauthlib

import google_auth_oauthlib.flow

from google.auth.transport.requests import Request

# 定义API范围

SCOPES = ['https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile']

# 初始化flow

flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(

    'credentials.json', scopes=SCOPES)

# 如果没有已存储的凭据,直接打开授权页面

if not credentials or not credentials.valid:

    # 如果凭据过期或不存在,允许用户登录

    if credentials and credentials.expired and credentials.refresh_token:

        credentials.refresh(Request())

    else:

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

        print('请登录到以下网址并通过授权:{}'.format(auth_url))

        code = input('请输入你收到的授权码:')

        flow.fetch_token(code=code)

# 将凭据存储到文件中以供以后使用

with open('token.json', 'w') as token:

    token.write(credentials.to_json())

以上代码首先指定了我们想要获取的API范围,接着通过调用InstalledAppFlow的静态方法from_client_secrets_file从凭据文件中创建一个flow对象。然后,我们检查是否已存在有效的凭据,如果存在,则直接使用;如果不存在或已过期,则打开授权页面并让用户登录。用户登录后,会收到一个授权码,我们调用fetch_token方法通过该授权码来获取令牌和访问凭证。最后,我们将凭据存储在一个文件中以供以后使用。

总结起来,使用Google OAuth2.0进行身份验证可以通过oauthlib库简化流程。首先创建flow对象,然后检查是否存在有效的凭据,如果不存在或已过期,则打开授权页面,用户登录后提供授权码,最后通过授权码获取令牌和访问凭证。有了访问凭证后,你便可以使用Google API进行操作了。