- 已连接应用
已连接应用 存储了您正在集成的平台的客户端 ID 和密钥、作用域以及端点。
快速开始
此示例使用 Google,但您可以使用任何支持 OAuth 2.0 的服务。
您的集成很可能需要一个设置文档类型(例如,“Google 设置”)。在这里,您创建一个指向 已连接应用 的链接字段。系统管理员稍后可以创建一个 已连接应用,输入客户端凭据并将其链接到您的集成。您将通过您的设置 DocType 知道哪个 已连接应用 属于您的集成。
google_settings = frappe.get_single('Google Settings')
connected_app_name = google_settings.get('connected_app')
connected_app = frappe.get_doc('Connected App', connected_app_name)
现在,您拥有了一个 已连接应用 的实例,其中包含凭据和端点 URI。如果用户尚未连接,他们可以打开 已连接应用 并点击右上角的“连接到…”按钮。或者,您可以获取授权 URI,并将其用于您自己的自定义按钮或重定向:
authorization_uri = connected_app.initiate_web_application_flow() # optional
一旦用户获得授权,您可以像这样获取一个经过身份验证的会话:
session = connected_app.get_oauth2_session()
如果此时用户未进行身份验证,他们将被重定向到身份验证页面。
现在,您可以从目标平台检索任何允许的资源:
session.get('https://www.googleapis.com/oauth2/v2/userinfo')
如果访问令牌已过期,会话将自动尝试刷新它。