使用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个前提条件才能使其工作
- 客户端凭证: 此应用程序默认期望
client_secrets.json与应用程序位于同一目录中。这是从Google开发者控制台下载的文件。您可以通过将client_secrets_path参数传递给SimpleFlaskGoogleLogin构造函数来更改此设置。 - https: 您必须使用SSL。只需添加
app.run(ssl_context='adhoc', ...)。 - 密钥: 您的应用程序必须设置密钥。
- 接受的跳转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.tar.gz 的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | e3bf15fcf47c28b00cd77b32fa244c4106b1769fcba53b26425aa2c168520b3e |
|
| MD5 | 37060184abf217ecb22404768e3fb048 |
|
| BLAKE2b-256 | 6274fdf153e60f787d064b386292f59a904bb0bde071d40a82924d1fd70fcab4 |
关闭
simple_flask_google_login-0.3.0-py3-none-any.whl 的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | cf786d6c4948f81cd0c15ec7adca655fac4b2adc7e199afde2089ee99c7e7938 |
|
| MD5 | 0dceffd10d0f1a0169685ad500d4d2c1 |
|
| BLAKE2b-256 | 5b4f4a3060d1089970dcd8f8cb7a304d1dc41615c2bdff92d27c85112fe786e1 |