微信公众号里,一般就两种操作:
一是请求微信接口:就是带上上一节获取的Access_token就可以了。
二是在微信中调用网页。在微信公众号里要请求网页,需要网页授权,微信网页授权采用OAuth2.0授权方式,分为三步:
第一步:请求code
第二步:通过code换取Access_token
第三步:通过Access_token换取接口
而在wechatpy中,已经给我们封装好了,我们写一个函数,只要传入url和state两个参数,就可以返回一个回调地址。这个函数写在Applications/Wechat/views/Utils.py文件中。和上一节的获取Access_token存放在一个文件中。
1 导入WeChatOAuth包
from wechatpy.oauth import WeChatOAuth
2 编写get_WeChatOAuth函数
这个函数中调用wechatpy中的WeChatOAuth方法,有五个参数:
appid:开发者ID
secret:开发者密码
redirect_url:需要重定义的网页地址(即我们需要访问的网页地址)
scope:应用授权作用域,微信的授权作用域分为snsapi_baset 和snsapi_userinfo,snsapi_baset只需要网页授权,不需要用户确认,而snsapi_userinfo需要获取用户信息,所以,需要用户确认。我们在登录公众号的时候,已经获取了用户信息,所以,当用户调用网页的时候,不需要再让用户确认了,所以,我们选择使用snsapi_baset
state:用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验。
传入这五个参数后,WeChatOAuth方法会返回一个对象。这个对象里包含了以下信息:
authorize_url:获取授权跳转地址
check_access_token:检查Access_token的有效性