django 项目调用微信接口,获取用户openID, 昵称及关注信息等

    最近写了一个微信公众号的项目,要获取用户详细信息及是否关注公众号,需要调用微信的接口。因为第一次用,所以开始的时候是很懵逼的,后来看了很多遍的文档以及百度了很多的CSDN才弄明白了一点。
    微信公众号开发需要服务号才可以,需要企业的认证信息,所以这个一般都是用的公司的公众号,个人是不能注册的.
    
    关于如何调用接口,在开发者文档中已经有详细说明,开发者文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842

1.静默授权总结起来就两步:

       第一步:静默授权,获取code

      第二部:通过code换取网页授权access_token及openid

2.用户授权总结起来三步:

   第一:用户授权,获取code

     第二:通过code,换取access_token及openid

     第三:拉取用户详细信息

 

    开发文档中提到的两种access_token,开始的时候我没搞明白一直以为两种是一样的(请原谅我反应比较慢,虽然文档中已经提到两种不一样,然而我还是没明白到底有啥区别),在开发的过程中总是提示错误,参考了一些CSDN才弄明白是怎么回事。

    两种token: 网页授权access_token和普通access_token
    
    1.网页授权access_token:

 微信的授权分为两种,一是默认授权,只能获取到openid的信息,一个是用户授权,可以获取到昵称,头像等详细信息.
    (1)    用户授权
    url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid={APPID}&redirect_uri= {redirect_url&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect'
    (2) 默认授权
    url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid={APPID}&redirect_uri={redirect_url}&response_type=code&scope=snsapi_base&state=123#wechat_redirect'
    以上步骤通过授权,获取code,用code 来换取网页授权的access_token值
    获取到code之后,再调用url2接口获取网页授权access_token
    url2 = 'https://api.weixin.qq.com/sns/oauth2/access_token?' \
                      'appid={APPID}&secret={SECRET}&code={CODE}&grant_type=authorization_code'
    ps: 在静默授权时,这一步已经获取到access_token,同时也获取到了openID,静默授权到此结束,如果还要获取用户昵称,头像等详细信息,则需要用户授权,还要进行其他操作.
    在这里静默授权和用户授权的access_token 都是网页授权token.只是用来换取token的code值获取接口不一样.
    2.普通基础access_token:

   url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={SECRET}'

    ps:如果想获取用户关注信息就要用到普通基础access_token,获取到token之后,请求以下接口获取关注信息
    redirect_url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token={ACCESS_TOKEN}&openid={OPENID}&lang=zh_CN'
    
代码示例(python3):

   1. 静默授权获取用户openId   


    在这里,我把静默授权获取用户信息给拆开来写,因为在实际开发中还要考虑到access_token是有时限的,每天获取的次数也是有限的,所以在实际开发中可以将acees_token进行缓存,每次要使用时先从缓存中读取,如果缓存过期,再重新获取.

 项目中,我使用的是数据库缓存,把缓存信息存在了数据库中,配置如下:

 

使用其他的缓存也是可以的,因为我要缓存的信息只有这个token信息,使用这个比较简单. 

用到的路由信息

 代码中用到的APPID,SECRET,ROOT_URL都是重要信息,所以,我将他们配置在Django 项目的settings.py文件中,在使用的时候调用即可.

 2.用户授权获取用户详细信息
     

 调用微信的接口,返回的数据是json格式,在微信文档中有提到返回的具体信息。

u_info中包含用户openID,昵称,头像等信息。

获取到的attention_info中包含是否关注等信息。

到此需要的信息都已经拿到了,再根据你的需求去做处理就可以了。

路由信息

因为要调微信接口,所以开发的时候不太好测试,可以使用微信开发者工具进行调试.

在写项目的时候还遇到一个问题,就是缓存中的access_token没有到过期时间就会失效的问题,后来查了一下资料才知道是我这个公众号还运行其他的项目,也需要用到access_token ,每次获取新access_token的时候,上一次的token会自动失效,所以才导致这个问题,所以在写项目之前要注意你要用到的公众号是否还有其他项目在运行.

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Django架构下验证企业微信用户信息,可以按照以下步骤进行: 1. 在企业微信中创建一个应用,并获取应用的AgentId、CorpId、Secret等信息。 2. 在Django中创建一个接口,用于接收企业微信服务器发送过来的请求。可以使用Django的csrf_exempt装饰器来关闭跨站请求伪造保护。 3. 在Django中对请求进行验证,验证方式包括校验请求的URL是否来自企业微信服务器、校验请求的消息体是否来自企业微信服务器、校验请求的时间戳是否过期等。 4. 在Django中向企业微信服务器发送请求,获取access_token和jsapi_ticket等信息,并将这些信息缓存起来,以便后续使用。 5. 在Django中对用户的身份进行验证,验证方式包括根据用户授权的code获取用户的UserId、根据UserId向企业微信服务器发送请求获取用户的详细信息等。 6. 在Django中生成一个自定义的token,并将token、UserId等信息保存到数据库中。 7. 在前端通过wx.setStorageSync()方法将token保存在本地缓存中。 8. 在后续的请求中,前端通过wx.getStorageSync()方法获取token,并将token通过HTTP请求的Header中发送到Django服务器。 9. 在Django中对每个请求进行token校验,如果校验通过,则维护用户的登录态。 需要注意的是,企业微信的验证过程中需要使用到加密和解密算法,例如AES算法和SHA1算法等。为了保障用户信息的安全,需要对传输的数据进行加密和解密处理。同时,为了防止token被伪造,需要在生成token时加入一些随机因素,例如时间戳和随机字符串等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值