类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享
/** 转载请保留原地址以及版权声明,请勿恶意修改
* 作者:杨浩瑞 QQ:1420213383 独立博客:http://www.yxxrui.cn
* 【后台】http://xiaoshuo.qqsiot.cn/manager 【前台】http://y6.qqsiot.cn
* 管理员账号:admin 渠道商账号:channel 代理商账号:agent 演示密码:123456
**/
一、微信小说分销系统是什么?
微信小说分销系统是一种合法变现系统,通过购买小说,添加到系统中,然后寻找一些需要粉丝变现的公众号管理者来做自己的渠道商,然后读者阅读小说,充值的钱80%-90%直接给渠道商。平台收取10%-20%,当然,比例自己可以设置。
二、为什么要多网页授权登录
对于微信小说分销系统来说,必然会出现多个公众号的情况,其实就是多个渠道商,每个渠道商都拥有一个公众号,为了更好的隔离渠道商,设计每个渠道商分配一个专属子域名,比如y{0}.qqsiot.cn。
为了更好的用户体验,需要实现自动登录和识别用户的功能,这样读者打开网站的时候不需要输入账号和密码之类的信息来验证信息,除了自动登录,还可以方便后期付款的时候可以调起微信支付。
三、多公众号设计方案
既然考虑到用户体验,不想让验证账号密码,减少繁琐的步骤,那么直接使用微信的无感授权登录方式,snsapi_base方式可以在用户没有关注公众号的时候获取到该用户的openid,并且不需要谈起授权页面,对于用户来说,整个过程是无感的,但是不好的地方在于,此方法无法获取到用户的详细信息,比如昵称、性别、年龄等(不方便后期分析网站的用户喜好和分布)。还有一种方式:snsapi_userinfo,此方式如果是从公众号内部进入的话是没有授权弹窗的,但是如果用户没有关注公众号,此时会弹出是否授权的页面,如果用户拒绝授权,那势必会造成一些不好的后果。
虽然snsapi_base方式无法获取到用户详细信息,但是可以考虑使用其他的办法解决,两个地方可以处理:
1、当用户阅读到一定章节的时候,提示关注公众号,关注成功后,微信会向我们的服务器推送一条关注消息,此时通过微信的获取用户消息接口去获取该用户的信息
收到的关注推送如下:

2、每次阅读时需要判断是否关注,若用户未关注,则提示关注,若已关注,并且数据库中记录是未关注,那么更新一下用户的详细信息
上边两个地方都提到了获取用户详细信息的接口,接口地址为:https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
可以获取到如下信息:

有点跑题了,言归正传.
四、后台配置基本的公众号信息
每个渠道商可以后台设置自己的公众号的微信号、AppId、AppSecret,然后再微信公众号后台配置授权域名等信息,如下图:

微信后台需要配置的信息如下图:

五、源码分析
这些配置好之后,在数据库中保存这些信息,当用户打开网站的时候,拿出这些信息去授权。

不要一味地去授权,先判断一下是不是在微信浏览器打开的,如果是的话才会去授权,如果不是的话,跳转到关注页面,此页面也是自己写的,上边有公众号的二维码,方便用户使用手机微信扫描关注。
如果是微信端,那么先获取渠道商的AppId,并且记录授权后需要跳转的地址,甚至是获取code和openid后再次跳转的地址。


此时授权成功,并且如果用户没有注册会自动注册,如果已经注册了,则直接打开刚才被拦截的页面,另外代码里边还写了支付页面的拦截,以此实现支付独立的功能。


后台手机查看,完美匹配

类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享的更多相关文章
- 类似818tu.co微信小说分销系统设计之多公众号网页授权自动登录源码
/** 转载请保留原地址以及版权声明,请勿恶意修改 * 作者:杨浩瑞 QQ:1420213383 独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...
- 类818tu.c微信小说分销系统设计之定时模板消息源码
近期将出个系列讲解开发过程,同时作为此系统的开发记录吧,万能的博客园,本边讲解如何发送模板消息,并且能够定时发送,下一篇讲解如何处理多个公众号的网页授权登录问题 [后台]http://xiaoshuo ...
- 微信公众平台开发-OAuth2.0网页授权(含源码)
微信公众平台开发-OAuth2.0网页授权接口.网页授权接口详解(含源码)作者: 孟祥磊-<微信公众平台开发实例教程> 在微信开发的高级应用中,几乎都会使用到该接口,因为通过该接口,可以获 ...
- 支持语音识别、自然语言理解的微信小程序(“遥知之”智能小秘)完整源码分享
记录自己搭建https的silk录音文件语音识别服务的调用过程,所有代码可在文中找链接打包下载 >>>>>>>>>>>>> ...
- 微信公众号网页授权登录--JAVA
网上搜资料时,网友都说官方文档太垃圾了不易看懂,如何如何的.现在个人整理了一个通俗易懂易上手的,希望可以帮助到刚接触微信接口的你. 请看流程图!看懂图,就懂了一半了: 其实整体流程大体只需三步:用户点 ...
- 你所误解的微信公众号开发、以及微信公众号网页授权、接收url跳转参数等问题
前言:有一星期没跟新博客了,最近太忙.项目赶进度就没把时间花在博客上:今天来说说所谓的微信公众号开发和填坑记录: 微信公众号:运行在微信终端的应用 (对于开发者来说比较爽的你只需考虑兼容微信浏览器,因 ...
- 微信公众号网页授权获取用户openid
最近一个项目是在微信公众号内二次开发,涉及到微信公众号支付,根据文档要求想要支付就必须要获取到用户的openid. 这是微信官方文档https://mp.weixin.qq.com/wiki?t=re ...
- 微信小说分销系统设计之使用百度Echarts地图统计功能统计微信粉丝地域分布情况
/** 转载请保留博客园原地址以及版权声明,请勿恶意修改,本博客中的内容均属于技术交流,请勿用于商业用途,谢谢配合 * 作者:杨浩瑞 QQ:1420213383 独立博客:http://www. ...
- 微信公众平台网页授权登陆access_token误区
公众平台里显示 每日获取access_token上线2000次,此access_token并非网页授权登陆的access_token大家不要混淆 1,网页授权登陆的access_token是没有上线的 ...
随机推荐
- 完全图的最短Hamilton路径——状压dp
题意:给出一张含有n(n<20)个点的完全图,求从0号节点到第n-1号节点的最短Hamilton路径.Hamilton路径是指不重不漏地经过每一个点的路径. 算法进阶上的一道状压例题,复杂度为O ...
- 「考试」noip模拟9,11,13
9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...
- linux scp 命令使用
1.scp命令使用 linux 把文件复制到另一台服务器上 复制文件 scp file_name user_name@remote_ip:file_path 复制文件夹 scp -r file_nam ...
- Python使用import导入模块时执行了模块的文件但报ModuleNotFoundError错误的愚蠢问题
老猿在学习import导入自定义模块时,搜索路径中sys.path中已经添加对应路径,发现会报ModuleNotFoundError,但对应的模块代码被执行了,代码myfib.py如下: def fi ...
- js 转为整数之Number()、parseInt()、parseFloat()区别
一:Number() 如果是Boolean值,true和false值将分别被转换为1和0. 如果是数字值,只是简单的传入和返回. 如果是null值,返回0. 如果是undefined,返回NaN. 如 ...
- MySQL事务(一)认识事务
简单来说,事务就是要保证一组数据库操作,要么全部完成,要么全部失败. 为什么要有事务 数据库中的数据是共享资源,因此数据库系统通常要支持多个用户的或不同应用程序的访问,会出现并发存取数据的现象. 数据 ...
- Tomcat 知识点总结
Tomcat 学习笔记.本文相关配置均为 tomcat8 下,其他版本可能略有不同.如有错误请多包涵. 架构 首先,看一下整个架构图 接下来简单解释一下. Server:服务器.Tomcat 就是一个 ...
- Codeforces Edu Round 64 A-D
A. Inscribed Figures 分类讨论打表即可. PS:这道题翻译有歧义. 这样稍微翻转一下,就可以是\(7\)个交点呀...(大概是我没看英文题干导致的惨案) #include < ...
- Springboot — 用更优雅的方式发HTTP请求:RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率. 我之前的HTTP开发是用ap ...
- day013|python之模块02&目录01
1 from...import 1.1 概念 1.1.1 首次导入模块会发生的事 会触发模块的运行,产生一个模块的名称空间 将运行模块文件过程中产生的名字丢到模块额名称空间 在当前名称空间产生一个名字 ...