Flask-WX-OAuth文档¶
安装¶
pip install Flask-WX-OAuth
使用方式¶
flask扩展的使用方式:
from flask_wx_oauth import WXOAuth
wx_oauth = WXOAuth()
wx_oauth.init_app(app)
也可以每次初始化后使用:
from flask_wx_oauth import WXOAuth
wx_oauth = WXOAuth(appid='YOUR APPID', secret='YOUR SECRET')
在view中调用¶
next = request.args.get('next', '/')
redirect_uri = url_for('.authorized', next=next, _external=True)
params = dict(
redirect_uri=redirect_uri,
scope='snsapi_base',
)
return redirect(wx_oauth.get_authorize_url(**params))
运行示例代码¶
docker build -t flask-wx-oauth .
docker run -v $(pwd):/app -p 5000:5000 flask-wx-oauth
API¶
-
class
flask_wx_oauth.
WXOAuth
(app=None, appid=None, secret=None)¶ 网站应用微信OAuth2.0登录服务
-
__init__
(app=None, appid=None, secret=None)¶ 初始化
参数: - app -- (optional) 使用配置中的WX_APPID和WX_SECRET
- appid -- (optional) 微信appid
- secret -- (optional) 微信secret
-
init_app
(app)¶ 使用app config初始化配置
获取用户同意授权,获取code的url
-
get_access_token
(code)¶ 通过code获取access_token的接口。返回dict
正确的返回:
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN","openid":"OPENID", "scope":"SCOPE" }
-
refresh_token
(refresh_token)¶ access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种:
- 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
- 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。
refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权,所以,请开发者在refresh_token即将过期时(如第29天时),进行定时的自动刷新并保存好它。
正确的返回:
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }
-
check_access_token
(access_token, openid)¶ 检验授权凭证(access_token)是否有效
正确的Json返回结果:
{ "errcode":0, "errmsg":"ok" }
错误的Json返回示例:
{ "errcode":40003, "errmsg":"invalid openid" }
-
get_userinfo
(access_token, openid)¶ 此接口用于获取用户个人信息。开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。 请注意,在用户修改微信头像后,旧的微信头像URL将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常情况。
正确的Json返回结果:
{ "openid":"OPENID", "nickname":"NICKNAME", "sex":1, "province":"PROVINCE", "city":"CITY", "country":"COUNTRY", "headimgurl": "头像url", "privilege":[ "PRIVILEGE1", "PRIVILEGE2" ], "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" }
-