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. Simulink仿真入门到精通(十三) Simulink创建自定义库

      当用户自定义了一系列模块之后,可以自定义模块库将同类自定义模块显示到Simulink Browser中,作为库模块方便地拖曳到新建模型中. 建立这样的自定义库需要3个条件: 建立library的mdl ...

    2. Simulink仿真入门到精通(六) Simulink模型保存为图片

      6.1 截图保存方式 Ctrl+Alt+A 6.2 拷贝试图方式 Edit→Copy Current View to Clipboard 6.3 saveas函数 用于保存figure或者simuli ...

    3. [JS]使用JavaScript实现简易俄罗斯方块

      [JS]使用JavaScript实现简易俄罗斯方块 首先,大家可以点击此处来预览一下游戏效果,随后将会以此为模板讲解如何使用JavaScript实现这样一个简易的俄罗斯方块项目(以下简称"该 ...

    4. python基础学习day6

      代码块.缓存机制.深浅拷贝.集合 id.is.== id: 可类比为身份号,具有唯一性,若id 相同则为同一个数据. #获取数据的内存地址(随机的地址:内存临时加载,存储数据,当程序运行结束后,内存地 ...

    5. (转)浅析epoll – epoll函数深入讲解

      原文地址:http://www.cppfans.org/1418.html 浅析epoll – epoll函数深入讲解 前一篇大致讲了一下epoll是个什么东西,优点等内容,这篇延续上一篇的内容,主要 ...

    6. AndroidStudio提高编译速度的几种方法

      第一种: 减少依赖库的使用,让代码更加精简.对于一些必须依赖的库要尽量使用jar包或者依赖库,这样他每次就会在本地直接加载,而不是每次翻墙检查更新 第二种: 打开Android Studio,选择菜单 ...

    7. iview admin template 基础模板架子

      https://github.com/iview/iview-admin/tree/template

    8. 浅谈ASP.NET Core中的DI

      DI的一些事 传送门马丁大叔的文章 什么是依赖注入(DI: Dependency Injection)?     依赖注入(DI)是一种面向对象的软件设计模式,主要是帮助开发人员开发出松耦合的应用程序 ...

    9. Salesforce LWC学习(十三) 简单知识总结篇一

      本篇参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 随着项目的学习以及trailhead的学习,会遇见自己曾经模糊的定义或者比较浪 ...

    10. 学习scrapy爬虫框架的一些经验和教训

      首先python的scrapy框架很好,功能强大,使用起来也很方便,省去了很多造轮子的时间.在学习的过程中也碰到了一些问题,在这里希望能分享与大家分享,做一个参考 1.安装(pip延时响应问题) sc ...