title: 自建网站对接微信公众号
date: 2018-04-12 15:25
tags:php
日常咱们有些写各类网站, 我的博客系统, 物流管理系统, 通讯录管理系统, 校园二手网站. 咱们都知道, 只须要租用一个服务器, 再配置一个备案好的域名, 就能够在浏览器上进行访问了.
不知你们, 不知你们有没有想过, 将你搭的网站对接微信公众号, 利用微信这个大用户软件, 来为你引流呢?
| 本文环境 | 版本 |
| --- | --- |
| 操做系统 | Ubuntu 16.04.03 |
| 运行方式 | VMware虚拟机 |
| 编程语言 | PHP |
| 项目局域网地址 | http://192.168.253.1/audit |数据库
Q: 你在搞笑吗? 不是直接在微信里面打开的吗?编程
A: 直接用微信打开是能够, 而后你在微信里面让用户再注册一个帐号? 对于大部分不想麻烦的小伙伴来讲, 他们会对此忘而却步. 其实微信是提供接口, 让你能够获取到微信的用户名,和用户头像的.
以上方式都须要开发者认证或者微信认证
好吧, 实际是的确如此, 不过. 若是你真的只是想玩玩. 你能够去这儿. https://mp.weixin.qq.com/debu...
优势
- 拥有几乎全部接口,
- 以及享受局域网IP回调(意思就是说,能够支持局域网, 这是正式微信平台号所不具有的)
- 发送模板消息, 不用审核.
缺点
- 只支持最多100个用户
- 不能设置名称, 头像.
对于一些只是想玩玩, 或者小规模用户的是没有问题的.json
扫码登陆就行了;
新建php文件(啥语言均可以,自行修改)
public function token() { $nonce = $_GET['nonce']; $token = 'weixin'; $timestamp = $_GET['timestamp']; $echostr = $_GET['echostr']; $signature = $_GET['signature']; //造成数组,而后按字典序排序 $array = array(); $array = array($nonce, $timestamp, $token); sort($array); //拼接成字符串,sha1加密 ,而后与signature进行校验 $str = sha1(implode($array)); if ($str == $signature && $echostr) { //第一次接入weixin api接口的时候 echo $echostr; exit; } }
而后在测试号里填写路径和token, 认证成功后就能够继续操做了
TIP: 这个连接并不须要一直可访问, 只须要第一次认证经过就OK, 甚至认证过能够直接删掉.
只有测试号支持ip
接口详情可在https://mp.weixin.qq.com/wiki...里查看api
注意:数组
- 这些接口不是简单的对接就行了, 每次请求都须要携带access_token,
- 而获取access_token, 天天有获取上限.
- access-token具备有效期(7200s) , 过时须要从新获取.
获取access_token的方法https://mp.weixin.qq.com/debu...浏览器
在这儿咱们须要三个接口
接口一:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
接口二:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
接口三:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
接口四: 刷新access_token
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
接口返回数据, 详见https://mp.weixin.qq.com/wiki...
第一步:用户赞成受权,获取code
示例:( 注意appid, redirect_url是变量)服务器
$str = 'http://open.weixin.qq.com/connect/oauth2/authorize?appid=wx20874ebf2ea1fc7f&redirect_uri=' . urlencode("http://192.168.253.1/audit/client/") . '&response_type=code&scope=snsapi_base&state=123#wechat_redirect';
第二步:经过code换取网页受权access_token微信
示例
$data = json_decode(file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $this->appid . "&secret=" . $this->secret . "&code=" . $_GET['code'] . "&grant_type=authorization_code"));
注意: 此处的access_token与上面的access_token不是同一个东西
第三步: 经过access_token换取userinfoapp
示例
$userInfo = json_decode(file_get_contents("https://api.weixin.qq.com/sns/userinfo?access_token=" . $data->access_token . "&openid=" . $data->openid . "&lang=zh_CN"));
刷新access_token, 若是须要
这是我画的一个请求过程图, 能够帮助理解
非必需, 也能够在电脑上, 也能够写到公众号子菜单中点击进入.
否则会这样
额, 关于后台代码原理就不讲了.
相似于一个从微信服务器发来的表单, 登陆进了系统, 而后再把这些数据存入数据库就行了.