Python使用微信推送
要完成微信的推送,首先需要申请服务号,并且需要进行企业认证,可以实现主动给用户发推送消息的功能
但是如果是个人的,则不能完成,这个时候就需要使用沙箱环境来模拟微信服务号的推送消息
进入这个链接,进入微信的沙箱环境,然后获取到测试号的appID和appsecret
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
1.用户先关注公众号,只是微信后台知道该用户关注了自己的公众号,我们写的Python程序并不能对应,所以需要通过某种方式来进行关联
2.方式之一,是通过向微信发送一个数据
access_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={appid}&redirect_uri={redirect_uri}&response_type=code&scope=snsapi_userinfo&state={state}#wechat_redirect" access_url = access_url.format( # 测试号的appid,后续可以换成商户号的 appid=settings.WECHAT_CONFIG["app_id"], # 'wxa18e1bfea74f2da3', # 回调地址 redirect_uri=settings.WECHAT_CONFIG["redirect_uri"], # 当前登录用户的唯一id,与第三方平台交互的用户唯一id state=request.session['user_info']['uid'] # 为当前用户生成MD5值 ) ret['data'] = access_url
3.发送数据后,微信会返回一个链接给我们,这个链接就是将这个用户与我们的系统之间,关联到微信。因此我们自己的系统在发送上述数据后,向前端返回一个链接供用户点击进行授权关联(一般使用二维码进行扫描)
<div id="qrcode" style="width: 250px;height: 250px;background-color: white;margin: 100px auto;">div>
一般通过ajax发送上面的请求,然后成功后将回调信息通过js生成一个二维码图片放到上面的div中,先导入js包
$('#qrcode').empty().qrcode({text: result.data});
用户扫描二维码,用户将进入是否授权获取信息的界面,选择是后将与系统正式绑定,相关代码如下:
res = requests.get( url="https://api.weixin.qq.com/sns/oauth2/access_token", params={ "appid": settings.WECHAT_CONFIG["app_id"], "secret": settings.WECHAT_CONFIG["appsecret"], "code": code, "grant_type": 'authorization_code', } ).json()
"app_id"和"appsecret"是商户或者测试号获取到的