LegacyApplicationClient

class oauthlib.oauth2.LegacyApplicationClient(client_id, **kwargs)[源代码]

直接使用资源所有者密码和用户名的公共客户端。

资源所有者密码凭据授予类型适用于资源所有者与客户端具有信任关系的情况,例如设备操作系统或高特权应用程序。授权服务器在启用此授权类型时应特别小心,并仅在其他流不可行时才允许它。

授权类型适用于能够获取资源所有者凭据(用户名和密码,通常使用交互表单)的客户端。它还用于通过将存储的凭据转换为访问令牌,将使用直接身份验证方案(如HTTP基本身份验证或摘要式身份验证)的现有客户端迁移到OAuth。

客户端获取资源所有者凭据的方法超出了本规范的范围。一旦获得访问令牌,客户端就必须丢弃凭据。

prepare_request_body(username, password, body='', scope=None, include_client_id=False, **kwargs)[源代码]

在请求正文中添加资源所有者密码和用户名。

客户端通过添加以下参数向令牌端点发出请求,该参数的格式为 Appendix B 在HTTP请求实体正文中:

参数:
  • username -- 资源所有者用户名。

  • password -- 资源所有者密码。

  • body -- 要向其中嵌入参数的现有请求正文(URL编码字符串)。这可能包含额外的参数。默认为‘’。

  • scope -- 访问请求的范围,如 Section 3.3

  • include_client_id (Boolean) -- True 若要发送 client_id in the body of the upstream request. This is required if the client is not authenticating with the authorization server as described in Section 3.2.1 。否则为False(默认)。

  • kwargs -- 要包括在令牌请求中的额外凭据。

如果客户端类型为机密,或者向客户端颁发了客户端凭据(或分配了其他身份验证要求),则客户端必须向授权服务器进行身份验证,如中所述 Section 3.2.1

准备好的正文将包括所有提供的凭据以及 grant_type 参数设置为 password **

>>> from oauthlib.oauth2 import LegacyApplicationClient
>>> client = LegacyApplicationClient('your_id')
>>> client.prepare_request_body(username='foo', password='bar', scope=['hello', 'world'])
'grant_type=password&username=foo&scope=hello+world&password=bar'