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. go源码分析(四) net包获取主机ip 子网掩码相关分析

      获取本地的ip时 顺便学习了下标准库net中的实现 在net/interface.go中进行了入口调用,返回值为Addr的slice func InterfaceAddrs() ([]Addr, er ...

    2. go源码分析(二) 使用go http包开发web时遇到的坑之重复注册Handle路由

      我们使用Handle注册http时 如果添加两行,即重复注册函数. http.HandleFunc("/",index) http.HandleFunc("/" ...

    3. MySQL 【教程二】

      MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: # CREATE TABLE table_name (c ...

    4. Java 借助poi操作PDF工具类

      ​ 一直以来说写一个关于Java操作PDF的工具类,也没有时间去写,今天抽空写一个简单的工具类,拥有PDF中 换行,字体大小,字体设置,字体颜色,首行缩进,居中,居左,居右,增加新一页等功能,如果需要 ...

    5. Python实现一个ORM模型类

      ORM是三个单词首字母组合而成,包含了Object(对象-类),Relations(关系),Mapping(映射).解释过字面意思,但ORM的概念仍然模糊.私以为要理解一个事物,最好的法子是搞明白它出 ...

    6. Java ServerSocket详解

      ServerSocket 构造方法 ServerSocket serverSocket = new ServerSocket(); ServerSocket(); //无参数 ServerSocket ...

    7. Contest 152

      2019-09-01 20:59:55 总体感受:最近几次参加contest发现自己的水平还是严重的不够,尤其是在处理一些异常情况的时候,遇到TLE,MLE如何有效的进行Debug是需要去锻炼的. 注 ...

    8. 微信APP支付-java后台实现

      不说废话,直接上代码 先是工具类(注意签名时要排序): import java.io.BufferedReader; import java.io.ByteArrayInputStream; impo ...

    9. Python第五章-内置数据结构05-集合

      Python内置数据结构 五.集合(set) python 还提供了另外一种数据类型:set. set用于包含一组无序的不重复对象.所以set中的元素有点像dict的key.这是set与 list的最 ...

    10. 使用TensorFlow v2.0构建多层感知器

      使用TensorFlow v2.0构建一个两层隐藏层完全连接的神经网络(多层感知器). 这个例子使用低级方法来更好地理解构建神经网络和训练过程背后的所有机制. 神经网络概述 MNIST 数据集概述 此 ...