本文不提供整套系统源码,只会开放部分源码,讲诉开发的经历、思路、问题解答,希望对新手有帮助,至于高手和大神一下而过或留下宝贵意见在此谢过。
废话不多说了开始进入正题。
基础篇
php当前主流WEB开发语言毋庸置疑不用多说。微信接口主要用到微信授权登录接口、微信JSSDK分享接口、微信支付接口,对于微信的一系列接口必须要牢骚一下到处是坑啊。分销系统是一种营销模式以后会解释。首先说一下第一步微信登录(oauth2第三方授权接口),个人认为比较重要的一部,优点用户体验高、安全性高、为后边做分销系统打下便利的基础,缺点只能在微信内置浏览器中访问对于微信外其他方式宣传推广不便利,只能用二维码的方式(生成链接形式的二维码网上第三方工具很多,也可以用程序来实现,有兴趣可以留言)。
首先看一下传说中的微信API接口文档吧,官网文档地址http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
用该接口必须需要一个认证的服务号、没有的情况下可以申请一个测试账号体验一下但不能宣传推广
关于网页授权回调域名的说明
文档写的比较清楚,在不用第三方平台的情况下,需要配置一下项目需要获取微信用户信息的路径,一二.....级域名都可以。这个比较明朗
再往下看第一遍没看懂,第二遍没看懂。。。。。。项目是一年前开始开发的当时的文档比现在还简陋而且网上可参考的资料很少官方没有实例,还好最后从一篇文章找到蛛丝马迹算是做出来了,牢骚一下
其他说明
先介绍几个参数appid和appsecret在微信公众平台中可以找到很多接口的调用都会用到这两个参数。
最重要的一个参数也是调用授权接口的目的,openid,它是一个微信号对应该公众平台的唯一标示,获取到它就可以认为用户已经微信登录了,后边一切业务流程和数据库记录都是围绕它来建立的。
下面说说如何获取openid和用户基本信息比如头像昵称城市性别等,这是一个比较蛋疼的过程,这么多步骤玩我们呢是吧?给你找个理由是为了安全性考虑吧。我又发牢骚了不好意思。
分三步
1 获取code,啥是code???不知道反正获取到它才能进行下一步
接口地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redire
appid刚才提高过在公众平台里可以找到,redirect_uri是重点它是再用户通过上述的接口地址发出请求到微信的服务器,微信服务器通过GET方式传递一个参数code返回到redirect_uri,用$_GET方式接受一下就可以。scope也是个比较重要的参数他有两种类型snsapi_base、snsapi_userinfo,说说区别如果只想实现微信登录也就是只需要openid那么使用snsapi_base,它的好处是用户在访问时并不知晓你抓取了他的openid。使用snsapi_userinfo除了可以抓取openid以外,还能抓取到更多很多微信用户信息,现在很多微信应用都需要头像和昵称那么直能使用snsapi_userinfo,缺点为会首先弹出微信授权是否允许的页面需经过用户同意才可以进行下一步的操作
如图:
2.获取openid和access_token
通过刚才获取到的code以及appid和appsecret
接口:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回的是json格式的数据
3获取头像昵称等...
通过openid和access_token
接口:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
返回的是json格式的数据
参数lang不写的时候默认返回英文数据
实例代码片段
a.php
$url='http://www.xxx.com/b.php';
$url=urlencode($url);
$href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=$url&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
@header("location:$href");
b.php
$code=$_GET['code'];
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxx&secret=xxx&code='.$code.'&grant_type=authorization_code';
$jsonstr= file_get_contents($url);
$jsonstr = json_decode($jsonstr,true);
$access_token= $jsonstr['access_token'];
$openid=$jsonstr['openid'];
$userurl='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid;
$userinfo=file_get_contents($userurl);
$userinfo = json_decode($userinfo,true);
好吧勉强算是实现了。。。。。。。。。。但是经过一段时间的运行抓取信息并不稳定会出现一部分用户没有获取到头像和昵称琢磨了很久不知道问题出现在哪里,在哪里?????
噢出现在 file_get_contents这个函数的问题上,用file_get_contents虽然可以实现但表现的效果极不稳定,后来改用curl就稳定多了但是不会达到100%抓取多方面因素造成的,但基本在可接受范围内。
今天时间有限,分销系统的定义、获取微信用户头像昵称等信息还有另一种方式不需要弹出授权界面、unionid多公众平台开发的时候需要用到、实现持久登录状态需要cookie、以及分销系统用户端的商城部分的购物车实现等内容会在第二次进行讲解。
附系统访问路径二维码一个,大家可以先看一下只能用微信访问,可以提问包括系统架构、前端JS脚本和一系列功能模块的实现问题,我会根据大多数人的需求更改下次更新的内容
- 大小: 4.1 KB
- 大小: 12.6 KB
- 大小: 11.9 KB
分享到:
相关推荐
自用系统中分离出来的代码,ASP微信Oauth2.0登录接口+微信支付接口
登录微信公众平台后台,在左侧目录底部找到“开发”-“接口权限”,点击进入并在接口列表中找到“网页授权获取用户基本信息”,点击右侧“修改”,在授权回调域名中填自己的域名,例如 www.abc.com,注意此处是域名...
项目中使用到的技术包含SpringBoot、SpringSecurity&oauth2(安全资源和授权中心模式、包括登录接口自定义返回字段、自定义手机号+密码登录、自定义免密登录)、Queue队列、线程池、xss攻击配置、SpringCache、Mybatis...
【PHP+MYSQL】SAE+双版微信墙系统,大屏幕源码+OAuth授权|投票|摇一摇|抽奖
微信OAuth2网页授权登陆接口,微信登陆获取头像,获取openid,独立代码编程一幕了然,会点php代码就能看懂!
微信OAuth2.0网页授权接口PHP版用法示例,测试前请先申请一个公众号供测试,微信提供测试用的公众账号,此帐号只能添加100个关注者且只有__已关注__的用户才可以进行OAuth2.0受权。 1.开通后将```appID```、```app...
微信OAuth2.0网页授权接口 微信OAuth2.0网页授权接口的thinkphp实现版本,主要实现了oauth网页受权,以及部分其他接口。 使用方法 为什么用OAuth2.0受权? 通过OAuth2.0受权的网页将会获取到打开者的微信信息,...
基于ThinkPHP3.2.3的微信OAuth2.0微信网页授权 基于ThinkPHP3.2.3的微信OAuth2.0微信网页授权
OAuth2验证可以使用多种方式,此处使用注解方式。设计思路是在需要获取用户信息的GET请求上添加注解,然后在调用的时候判断是否包含此注解,然后做处理流程。 每次请求包含2种情况: 1.不需要获取用户信息,直接跳转...
首先,去微信公众平台测试号管理注册公众号。 ...IDE:IntelliJ IDEA 2020.1.3 x64 (找度娘破解) 微信开发者工具 (官网去下载) jdk版本 :1.8 natapp:NATAPP-内网穿透 ...此篇文章献开发使用,具体线上部署等更新。。。
使用idea开发工具,基于springboot2.x、jwt鉴权、nginx集群,前后端分离的微信Oauth2.0一键登录和微信网页扫码支付测试开发demo
SpringCloud+SpringBoot+OAuth2+Spring Security+Redis实现的微服务统一认证授权
string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appid, appsecret, code); LogHelper.Debug(url); string ...
利用微信OAuth2.0获取微信用户信息源码
微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息
微信企业号OAuth2验证接口的2种实例(使用SpringMVC),里面包含注解方式和简单实现OAuth2的验证,此例不包含jar,因为jar太大而且之前的例子已经上传过了!
使用方法 1、设置好跳转链接。 2、配置好 APPID和 SECRET 放置回调域名下面即可。
关注者点击微信底部菜单 可以绑定关注者信息与业务系统之间的信息
Odoo 企业微信(企业号)应用对接模块,实现Oauth2网页授权登录,自定义odoo业务消息推送。 for odoo10, odoo11 特性 oauth登录与odoo用户登陆互不影响。 无需安装额外python模块依赖,开箱即用。 一键同步企业微信...