关于django调用微信授权接口获取用户信息记录

关于微信公众号网页与django授权记录

最近因为工作需要,需要在django中调用微信公众号中的接口来对公众号中打开的网页进行授权,所以接触到了微信的授权与django中接口的调用。
首先,在django中需要创建两个view,一个view用来获取微信授权的code,另一个view用来获取openid等用户的信息,话不多说,我们来分析第一个view

def weixinbind(request):
    if request.method == 'GET':
        try:
            return HttpResponseRedirect(
                'https://open.weixin.qq.com/connect/oauth2/authorize?appid=这里写你的appid&redirect_uri=这里写你的回调函数地址,就是第二个view注册的路由地址&response_type=code&scope=snsapi_userinfo#wechat_redirect')
        except Exception as e:
            log('error', str(e), False)
            return render(request, '500.html')

需要注意的亮点就是appid后面写的是你在微信开发者文档中注册通过的appid,而redirect_uri写的是你回调函数的路由地址,总地址,注意必须是https的,后面的response_type和scope可以在开发者文档中根据自己的需求进行填写。
在这里我需要着重提醒,redirect_uri中的域名必须是注册在微信开发者中心里面这个小程序/公众号中的域名。
在django中,redirect_uri中的地址必须用urllib.parse进行拆分
比如我有一个地址是https://www.qq.com/weixin_bind_callback,那么写在redirect_uri中时就需要用urllib.parse进行拆分

s = https://www.qq.com/weixin_bind_callback
urllib.parse.quote(s,safe='')

这样我们得到的地址就是https%3A%2F%2Fwww.qq.com%2Fweixin_bind_callback
以上就是第一个获取code的view
下面我们来说第二个view,用来获取用户的基本信息

def weixinbind_callback(request):
    if request.method == 'GET':
        code = request.GET.get('code')
        state = request.GET.get('state')
        appid = xxxxx'  # 你的公众号appid
        appsecret = xxxx'  # 你的公众号appsecret
        r = requests.get(
            'https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code' % (
                appid, appsecret, code))
        d = json.loads(r.text)
        r = requests.get(
            'https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN' % (
                d['access_token'], d['openid'])
        )
        print(r.content)
        dd = json.loads(r.content.decode('utf8'))
        openid = dd['openid']
        return HttpResponseRedirect('/wechat/index')

因为我主要需要用户的openid所以我只获取了用户的openid,这就是在django中调用微信授权接口然后进行用户下一步操作的两个view,希望对各位有所帮助。
如果大家还有什么不太理解的地方可以多看看开发者文档,我相信对大家会很有帮助的

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值