设为首页 收藏本站
查看: 571|回复: 0

[经验分享] [PHP教程] php+微信接口开发的微信分销平台拆分讲解(一)微信oauth2接口

[复制链接]

尚未签到

发表于 2017-4-10 10:27:07 | 显示全部楼层 |阅读模式
本文不提供整套系统源码,只会开放部分源码,讲诉开发的经历、思路、问题解答,希望对新手有帮助,至于高手和大神一下而过或留下宝贵意见在此谢过。


废话不多说了开始进入正题。
基础篇
php当前主流WEB开发语言毋庸置疑不用多说。微信接口主要用到微信授权登录接口、微信JSSDK分享接口、微信支付接口,对于微信的一系列接口必须要牢骚一下到处是坑啊。分销系统是一种营销模式以后会解释。首先说一下第一步微信登录(oauth2第三方授权接口),个人认为比较重要的一部,优点用户体验高、安全性高、为后边做分销系统打下便利的基础,缺点只能在微信内置浏览器中访问对于微信外其他方式宣传推广不便利,只能用二维码的方式(生成链接形式的二维码网上第三方工具很多,也可以用程序来实现,有兴趣可以留言)。

首先看一下传说中的微信API接口文档吧,官网文档地址http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html


DSC0000.png



用该接口必须需要一个认证的服务号、没有的情况下可以申请一个测试账号体验一下但不能宣传推广
关于网页授权回调域名的说明
文档写的比较清楚,在不用第三方平台的情况下,需要配置一下项目需要获取微信用户信息的路径,一二.....级域名都可以。这个比较明朗
再往下看第一遍没看懂,第二遍没看懂。。。。。。项目是一年前开始开发的当时的文档比现在还简陋而且网上可参考的资料很少官方没有实例,还好最后从一篇文章找到蛛丝马迹算是做出来了,牢骚一下

其他说明
先介绍几个参数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,缺点为会首先弹出微信授权是否允许的页面需经过用户同意才可以进行下一步的操作
如图:


DSC0001.png




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脚本和一系列功能模块的实现问题,我会根据大多数人的需求更改下次更新的内容

DSC0002.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-362788-1-1.html 上篇帖子: 搭建php环境 虚拟目录的两种配置方法vhost rewrite 下篇帖子: php里判断一个网站和网页是否能打开
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表