Django Wechat Api

djangowechatapi是基于wxpydjango制作的web应用

安装

  • 使用pip

    pip install djangowechatapi
  • 源码安装

    git clone https://github.com/Ivy-1996/wechatapi.git
    
    cd wechatapi
    
    python setup.py install

配置

  • 该模块依赖djangorestframeworkdjango_filter,需要把他们一起注册到INSTALLED_APPS

  • INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'django_filters',
    'wechat',
    ]
  • 添加到urls

  •   	urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('wechat.url'))
    ]
  • 配置缓存

  • CACHES = {
    "default": {
    "BACKEND": "django_redis.cache.RedisCache",
    "LOCATION": f'redis://127.0.0.1/8',
    "OPTIONS": {
    "CLIENT_CLASS": "django_redis.client.DefaultClient",
    }
    }
    }
  • 如果使用django默认的文件存储机制,需要在SETTINGS里面指定

  • MEDIA_PATH = os.path.join(BASE_DIR, 'media')
  • 如果使用的是mysql数据库存储,则需要制定数据库和表的编码为utf8mb4

  • 执行迁移脚本

    python manager.py migrate

应用接口详情

  • 由于网页版微信的保密机制,无法捕捉到用户的唯一id,这里采用的是wxpy提供的puid作为用户的唯一身份标识。

  • 创建微信应用:

    • 命令行创建
      python manager.py createwechatapp
      
      please enter the name of wechat app:<你的应用名>
      please enter the token of <你的应用名> app:<应用的token>
      create app successfuly!
      your app_id: <app_id>
      your app_secret: <app_secret>
    • 或者通过网页使用django-admin创建
  • 获取access_token

    • 所有api的默认的认证方式都是通过access_token来实现的,access_token的有效期为2个小时(可以在settings.py里面设置ACCESS_TOKEN_EXPIRE_IN来修改默认的2个小时)

    • 如果你觉得access_token不够安全,你也可以使用模块提供的SignatureAuthentication来实现实时用户认证。具体使用请参考源码。

    • 获取access_token(access_token依赖redis缓存,请确保上述配置均已配置完成)

      methodGET

      url: /access_token?app_id=<app_id>&app_secret=<app_secret>

      正常情况下,会返回

      {
      "access_token": "ACCESS_TOKEN",
      "expire_in": 7200
      }

      如果出错了

      {
      "errmsg": [
      "无效的app"
      ]
      }
  • 网页登陆

    method: GET

    url: /login?access_token=<access_token>

    return:

    json { "uuid": "wbQeNse67Q==", "status": "0", "qrcode": "https://login.weixin.qq.com/qrcode/wbQeNse67Q==" }

    参数说明

    uuid: 登陆二维码的唯一标识

    status: 登陆状态

    qrcode: 获取登陆二维码的地址

  • 登陆验证

    method: GET

    url/check-login?access_token=<access_token>&uuid=<uuid>

    return:

    {
    "status": "408",
    "alive": null,
    "avatar": null
    }

    status:

    * 408:等待扫描登录

    * 201:已扫描,但为点击确认登录(此时可以获取到用户的头像)

    * 200:已扫描登录成功。

    avatar: 扫描用户的头像

    alive: 登录后为True,退出登录后为False,未登录为null

    如果是做成网页版登录,前端在拿到登录二维码之后可以轮询这个接口来判断用户的登录状况

  • 获取好友列表

    method: GET

    url: /friends?access_token=<access_token>

    return:

    {
    "count": 140,
    "next": "http://127.0.0.1:8000/friends?access_token=fc99fe6e-7771-4e22-b89d-e9827463bf65&page=4",
    "previous": "http://127.0.0.1:8000/friends?access_token=fc99fe6e-7771-4e22-b89d-e9827463bf65&page=2",
    "results": [
    {
    "puid": "3b1b58a2",
    "name": "多吃点苹果

    微信号网页版api的更多相关文章

    1. 基于.Net平台C#的微信网页版API

      git上有很多类似的项目,但大多都是python和js的,为了便于.Net windows平台的使用,我重构了一个.Net版本的,已整理开源 https://github.com/leestar54/ ...

    2. PHP 之CI框架+GatewayWorker+AmazeUI低仿微信聊天网页版

      html5开发的仿微信网页版聊天,采用html5+css3+jquery+websocket+amazeui等技术混合架构开发,实现了微信网页版的主要功能. 一.效果图 二.前端参考代码 <!D ...

    3. 【Python之路】特别篇--微信Web网页版通信的全过程分析

      文章所使用Python版本为py3.5 1.微信服务器返回一个会话ID 微信Web版本不使用用户名和密码直接登录,而是采用二维码登录,所以服务器需要首先分配一个唯一的会话ID,用来标识当前的一次登录. ...

    4. Your wechat account may be LIMITED to log in WEB wechat, error info: <error><ret>1203</ret><message>为了你的帐号安全,此微信号不能登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录。Windows微信下载地址:WeChat for PC

      转载:https://zhuanlan.zhihu.com/p/76180564 微信网页版限制登录或禁止登录将影响一大批使用itchat等Web Api方案的微信机器人 网页版微信 API 被封了, ...

    5. 玩玩微信公众号Java版之六:微信网页授权

      我们经常会访问一些网站,用微信登录的时候需要用到授权,那么微信网页授权是怎么一回事呢,一起来看看吧!   参考官方文档:https://mp.weixin.qq.com/wiki?t=resource ...

    6. 图灵机器人api的使用方法含微信版本和网页版

      访问图灵机器人官网http://www.tuling123.com/ 注册一个新的机器人账号 注册成功后转到主页 点击我的机器人>创建机器人>微信机器人 填写基本信息 点击微信介入> ...

    7. 16-网页,网站,微信公众号基础入门(网页版MQTT,页面控件位置调整入门)

      https://www.cnblogs.com/yangfengwu/p/11200767.html 说一下,只要你java学的很好,那么几乎所有的语言都不在话下了 来看一下样式设置 运行 在左上角感 ...

    8. 微信支付.NET版开发总结(JS API),好多坑,适当精简

      前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有 ...

    9. 微信支付.NET版开发总结(JS API),好多坑,适当精简。

      前2天,做一个手机网页的微信支付的项目,费了好些周折,记录一下.接下来,按照开发步骤,细数一下,我遇到的那些坑. [坑1]官方邮件中下载的demo只有PHP版本,其他版本没有给链接.可能让人误以为只有 ...

    随机推荐

    1. (转).balignl 16,0xdeadbeef浅析

      原文地址:http://zqwt.012.blog.163.com/blog/static/12044684201031102956976/ 最近在分析u-boot的源代码,看到这一行: .balig ...

    2. react 装 router - yarn add react-router-dom@next

      react 装 router yarn add react-router-dom@next

    3. Asp.net textbox 控件 的 onTextChange 事件

      <asp:TextBox ID="txt_MailType" runat="server" OnTextChanged="exitMailTyp ...

    4. sqlmap详解

      sqlmap是一个自动化的sql注入工具,其主要功能是扫描.发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库有MySQL, Oracle,PostgreSQL, Microsof ...

    5. Sqli-labs 搭建SQL注入平台

      sqli-labs是一款学习sql注入的开源平台,共有75种不同类型的注入. 搭建步骤: 1.在Windows系统中安装WAMP 下载地址:https://pan.baidu.com/s/1HY0hF ...

    6. iOS开发如何面对疫情过后的面试高峰期 !

      2020年本应该是一个 "爱你.爱你"的年份!却因为 黑天鹅 给我们带来非常大的影响! 一.2020年iOS招聘数据分析 这里是 2020年3月份BOSS直聘 北京iOS招聘前几页 ...

    7. SpringMVC框架——集成RESTful架构

      REST:Representational State Transfer 资源表现层状态转换 Resources 资源 Representation 资源表现层 State Transfer 状态转换 ...

    8. 全文搜索技术--solr7.1之mysql的安装步骤

      1.安装命令 #>在线安装wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 输完上面一句话不能正常的下载安装 ...

    9. CBV和APIView源码分析

      CBV源码分析 查看源码的方式,先查看自身,没有去找父类,父类没有就去找父父类... 自己定义的类 class Author(View): def get(self,request): back_di ...

    10. mysql数据库表格之间的关系

      外键 昨日内容回顾: 字段类型 约束条件 创建表的完整语法 create table 表名( 字段名 字段类型[(宽度) 约束条件], 字段名 字段类型[(宽度) 约束条件], 字段名 字段类型[(宽 ...