跳转到主要内容

使用Flask实现Google登录的便利实用工具。

项目描述

Simple Flask Google Login

Alvin Wan编写,用于教育目的。请参阅随附的第三方登录工作原理教程。

使用Flask实现Google登录的便利实用工具。

这作为一个模板比作为一个可安装的库更有用。无论如何,它都是一个简单的方法,可以快速使用Google登录而无需做太多工作。

开始使用

使用pip安装实用工具。

pip install simple-flask-google-login

使用Flask应用初始化实用工具的管理器。

from simple_flask_google_login import SimpleFlaskGoogleLogin

SimpleFlaskGoogleLogin(app)

或者,在构建后使用应用初始化。

manager = SimpleFlaskGoogleLogin()
manager.init_app(app)

请注意,您需要以下4个前提条件才能使其工作

  1. 客户端凭证: 此应用程序默认期望client_secrets.json与应用程序位于同一目录中。这是从Google开发者控制台下载的文件。您可以通过将client_secrets_path参数传递给SimpleFlaskGoogleLogin构造函数来更改此设置。
  2. https: 您必须使用SSL。只需添加app.run(ssl_context='adhoc', ...)
  3. 密钥: 您的应用程序必须设置密钥。
  4. 接受的跳转URI: 在Google开发者控制台中,您的Oauth2客户端必须将跳转URI https://127.0.0.1:5000 列为接受的跳转URI。这是默认的跳转URI。您可以通过将redirect_uri参数传递给SimpleFlaskGoogleLogin构造函数来更改此设置。

以下是一个包含所有这些元素的简单示例。

from flask import Flask, session
from simple_flask_google_login import SimpleFlaskGoogleLogin


app = Flask("Google Login App")
app.secret_key = "YourSecretKeyHere"  # Secret key is needed for OAuth 2.0
SimpleFlaskGoogleLogin(app)


@app.route("/")
def index():
    if 'name' in session:
        return f"Hello {session['name']}! <a href='/logout'>Logout</a>"
    return "<a href='/login'>Login</a>"


if __name__ == "__main__":
    app.run(ssl_context='adhoc')

完成啦! 这就是您需要的一切。现在,加载您应用的 /login URL 以启动登录流程。加载 /logout URL 以注销。有关最小示例,请参阅 examples/ 目录。

高级用户? 继续阅读。这里有几种您可以直接使用此实用程序进行自定义的修改。

高级:自定义 Google 登录

您可以更改任何常规 Google 登录配置

  • 客户端密钥路径: 这应该是从 Google 开发者控制台中的 OAuth2 客户端下载的 JSON 文件。该文件将包含客户端 ID 和密钥。
  • 作用域: 这是您的应用请求访问的作用域列表。默认情况下,应用仅请求“基本”信息,如姓名和电子邮件地址。
  • 重定向 URI: 这是 Google 会将带有登录代码附加的 GET 请求发送到的 URI。这必须是一个 https URL -- 不能是 IP 地址或自定义 URL 协议(即深链接)。默认情况下,这是您应用的登录回调页面。
manager = SimpleFlaskGoogleLogin(
    client_secrets_path='/path/to/client_secrets.json',
    scopes=['profile', 'email'],
    redirect_uri='https://example.com/login/callback'
)

高级:自定义路由

您可以重命名任何路由。例如,如果您想使用 /login 作为具有多个选项的通用登录页面,则可以重新定义这些路由为 /google/login 等。

manager = SimpleFlaskGoogleLogin()
manager.init_app(app, login_endpoint='/google/login')
# creates a login route at `/google/login`

您可以为所有端点添加自定义处理程序,以自定义不同的行为。例如,使用新浏览器打开授权 URL,而不是在当前选项卡中打开。

import webbrowser

def handler(authorization_url):
    webbrowser.open(authorization_url)
    return f"If redirect fails, click <a href='{authorization_url}'>here</a>."

manager = SimpleFlaskGoogleLogin(authorization_url_handler=handler)

最后,您可以通过将端点命名为 None 来请求管理员完全跳过一个端点并从头开始编写。

manager = SimpleFlaskGoogleLogin()
manager.init_app(app, login_endpoint=None)

为什么创建这个?

我之前最喜欢的 Flask-GoogleLogin 现已弃用,而且我每次想支持 Google 登录时都懒得重新学习 oauth2。这个库至少是一个快速入门代码。当然,有 很多 其他 实现,但我想要一个 非常 简单的 -- 不是与 SQL 和 flask-login 以及其他一系列随机库混合匹配的。

项目详情


下载文件

下载您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

simple-flask-google-login-0.3.0.tar.gz (15.7 kB 查看散列)

上传时间

构建发行版

simple_flask_google_login-0.3.0-py3-none-any.whl (13.4 kB 查看散列)

上传时间 Python 3

支持