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. Python操作系统

      一 为什么要有操作系统 (两本书:现代操作系统.操作系统原理,学好python以后再去研究吧~~) 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输 ...

    2. 使用JavaScript策略模式校验表单

      表单校验 Web项目中,登录,注册等等功能都需要表单提交,当把用户的数据提交给后台之前,前端一般要做一些力所能及的校验,比如是否填写,填写的长度,密码是否符合规范等等,前端校验可以避免提交不合规范的表 ...

    3. AspNetCore3.1_Middleware源码解析_3_HttpsRedirection

      概述 上文提到3.1版本默认没有使用Hsts,但是使用了这个中间件.看名字就很好理解,https跳转,顾名思义,就是跳转到 https地址. 使用场景,当用户使用http访问网站时,自动跳转到http ...

    4. Druid 0.17 入门(3)—— 数据接入指南

      在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式.比如批处理数据的接入和实时流数据的接入.本文我们将介绍这几种数据接入方式. 文件数据接入:从文件中加载批处理数 ...

    5. 数据结构 - Collection接口

      简介 Collection继承自Iterable,Collection接口是Java集合两大分支中的一支,Queue.List.Set都是Collection的扩展:集合大类分为了Collection ...

    6. 系统之眼!Linux系统性能监控工具Glances

      一.Glances介绍 glances是一个基于python语言开发,可以为linux或者UNIX性能提供监视和分析性能数据的功能.glances在用户的终端上显示重要的系统信息,并动态的进行更新,让 ...

    7. 【盘它!】那些让效率MAX的工具和方法(Mac篇)

      一.前言 人类之所以伟大,是因为会创造并使用工具! 工欲善其事必先利器.高效的工具和方法不仅能最大化 节省我们的时间,还可以一定程度上让我们 保持专注,以达到 事半功倍 的效果. 但仅仅有工具不会使用 ...

    8. DNS提供的服务

      DNS提供的服务 DNS是:1.一个由分层的DNS服务器实现的分布式数据库:2. 一个使主机能够查询分布式数据库的应用协议.DNS协议运行在UDP上,使用53号端口. 与http,FTP,SMTP协议 ...

    9. 终极解决方案——sbt配置阿里镜像源,解决sbt下载慢,dump project structure from sbt耗时问题

      #sbt下载慢的问题 默认情况下,sbt使用mvn2仓库下载依赖,如下载scalatest时,idea的sbtshell 显示如下url https://repo1.maven.org/maven2/ ...

    10. Mybatis在xml配置文件中处理SQL中的大于小于号的方法

      之前在项目中遇到了在SQL中<=不识别的问题,在Navicat中语句正常,在xml中不识别,想起来就记录一下 项目用的是Mybatis,经过网上多次查询,验证,总结方法如下: 一.使用<! ...