MobileApplicationClient
- class oauthlib.oauth2.MobileApplicationClient(client_id, default_token_placement='auth_header', token_type='Bearer', access_token=None, refresh_token=None, mac_key=None, mac_algorithm=None, token=None, scope=None, state=None, redirect_url=None, state_generator=<function generate_token>, code_verifier=None, code_challenge=None, code_challenge_method=None, **kwargs)[源代码]
利用隐式代码授予工作流的公共客户端。
基于用户代理的应用是公共客户端,其中客户端代码从网络服务器下载并在资源所有者使用的设备上的用户代理(例如,网络浏览器)内执行。协议数据和凭据对于资源所有者来说很容易访问(并且通常是可见的)。由于此类应用程序驻留在用户代理中,因此它们可以在请求授权时无缝使用用户代理功能。
隐式授权类型用于获取访问令牌(它不支持颁发刷新令牌),并且针对已知操作特定重定向URI的公共客户端进行了优化。这些客户端通常在浏览器中使用脚本语言(例如,脚本语言)实现。
作为基于重定向的流,客户端必须能够与资源所有者的用户代理(通常是Web浏览器)交互,并能够从授权服务器接收传入请求(通过重定向)。
与授权码授予类型不同,在授权码授予类型中,客户端分别请求授权和访问令牌,而客户端接收作为授权请求的结果的访问令牌。
隐式授权类型不包括客户端身份验证,并依赖于资源所有者的存在和重定向URI的注册。因为访问令牌被编码到重定向URI中,所以它可以向资源所有者和驻留在同一设备上的其他应用程序公开。
- parse_request_uri_response(uri, state=None, scope=None)[源代码]
解析响应URI片段。
如果资源所有者批准访问请求,授权服务器将发布访问令牌并将其传递给客户端,方法是使用“app/x-www-form-urlencode”格式将以下参数添加到重定向URI的片段组件:
- 参数:
uri -- 用户从提供程序重定向到您(即客户端)时产生的回调URI。
state -- 授权请求中提供的状态。
scope -- 授权请求中提供的作用域。
- 返回:
令牌参数字典。
- 加薪:
如果响应无效,则返回OAuth2Error。
成功的响应应始终包含
- access_token
授权服务器颁发的访问令牌。通常是随机字符串。
- token_type
如中所述颁发的令牌的类型 Section 7.1 。通常
Bearer
。- state
如果您在授权阶段提供了状态参数,则提供者需要在响应中包含该确切的状态值。
虽然不是强制的,但建议提供程序包括
- expires_in
访问令牌的生存期(秒)。例如,值“3600”表示访问令牌将在生成响应的一小时后过期。如果省略,授权服务器应通过其他方式提供过期时间或记录缺省值。
- scope
提供商可以在所有响应中提供此信息,但仅当其在授权请求后发生更改时才被要求提供。
下面是几个回复示例:
>>> response_uri = 'https://example.com/callback#access_token=sdlfkj452&state=ss345asyht&token_type=Bearer&scope=hello+world' >>> from oauthlib.oauth2 import MobileApplicationClient >>> client = MobileApplicationClient('your_id') >>> client.parse_request_uri_response(response_uri) { 'access_token': 'sdlfkj452', 'token_type': 'Bearer', 'state': 'ss345asyht', 'scope': [u'hello', u'world'] } >>> client.parse_request_uri_response(response_uri, state='other') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "oauthlib/oauth2/rfc6749/__init__.py", line 598, in parse_request_uri_response **scope** File "oauthlib/oauth2/rfc6749/parameters.py", line 197, in parse_implicit_response raise ValueError("Mismatching or missing state in params.") ValueError: Mismatching or missing state in params. >>> def alert_scope_changed(message, old, new): ... print(message, old, new) ... >>> oauthlib.signals.scope_changed.connect(alert_scope_changed) >>> client.parse_request_body_response(response_body, scope=['other']) ('Scope has changed from "other" to "hello world".', ['other'], ['hello', 'world'])
- prepare_request_uri(uri, redirect_uri=None, scope=None, state=None, **kwargs)[源代码]
准备隐式授权请求URI。
客户端通过使用“app/x-www-form-urlencode”格式将以下参数添加到授权端点URI的查询组件来构造请求URI Appendix B :
- 参数:
redirect_uri -- 可选。重定向URI必须是绝对URI,并且在使用之前应该已向OAuth提供程序注册。如中所述 Section 3.1.2 。
scope -- 可选。访问请求的范围如第节所述 3.3`_. 这些可以是任何字符串,但通常是URI或各种类别,例如
videos
或documents
。state -- 推荐的。客户端用来维护请求和回调之间的状态的不透明值。授权服务器在将用户代理重定向回客户端时包括此值。该参数应用于防止跨站点请求伪造,如中所述 Section 10.12 。
kwargs -- 要包括在请求URI中的额外参数。
除了提供的参数外,OAuthLib还将附加
client_id
这是在构造函数中提供的,也是必需的response_type
参数,设置为token
**>>> from oauthlib.oauth2 import MobileApplicationClient >>> client = MobileApplicationClient('your_id') >>> client.prepare_request_uri('https://example.com') 'https://example.com?client_id=your_id&response_type=token' >>> client.prepare_request_uri('https://example.com', redirect_uri='https://a.b/callback') 'https://example.com?client_id=your_id&response_type=token&redirect_uri=https%3A%2F%2Fa.b%2Fcallback' >>> client.prepare_request_uri('https://example.com', scope=['profile', 'pictures']) 'https://example.com?client_id=your_id&response_type=token&scope=profile+pictures' >>> client.prepare_request_uri('https://example.com', foo='bar') 'https://example.com?client_id=your_id&response_type=token&foo=bar'