1、业务背景及问题描述:
<时间>:公元2017年11月20日
<地点>:地心程序开发研究中心1024室
<人物>:步浪、a.bulang123.cn、b.bulang123.cn、策码扬编微信公众号
<事件>:步浪同志在a.bulang123.cn上面写了一套投票的系统供天下人使用,可是闲不住的他又在b.bulang123.cn上写了一套聊天系统,这两套系统都需要获取客户的微信相关信息,但是微信却只允许绑定一个域名进行授权(龙哥的这种思维特别值得我们学习)。平地一声雷两个平台的尖锐矛盾就此爆发,世界开始动乱、民不聊生、哀鸿遍野、一片狼藉。这时不远的天际闪出一道光闪瞎了我的天眼,只见一位帅气逼人、霸气侧漏的少侠以气吞山河之势,坐落人间解决的这场矛盾。
2、解决办法:(重点不闲扯)
写一个代理服务,把这个代理服务的域名绑定到微信公众号,用来专门负责授权获取微信返回来的用户信息,再通过代理服务器分发给各个站点。这个代理服务就相当于我们的外交官,接收别国发来的信息,再广播给国内各个机构,让各个机构各取所需,工作有序进行。
3、图形解析:

4、代码展示
<1>、业务域名代码:
<?php
/*业务域名下获取用户信息*/
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
//实例化数据库用户列表(修改)
$db_userlist = M("userlist","bl_");
//判断是否已经授权
if (!empty($_SESSION['uid'])) {
$uid = $_SESSION["uid"];
} else {
//代理服务的主域名(修改)
$proxyUrl = C('PROXY_URL');
//微信公众号的appid(修改)
$appid = C('appid');
$redirectUrl = "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$redirect_uri = urlencode($redirectUrl);
$options = array(
$proxyUrl,
'?appid='.$appid,
'&redirect_uri='.$redirect_uri,
'&response_type=code',
'&scope=snsapi_userinfo',
'&device=mobile'
);
//没有登录跳转授权页面
$code = $_GET["code"];
if (empty($code)) {
header('Location: ' . implode('', $options));
} else {
/*获取用户的基础信息(使用的第三方sdk库,自行替换获取方法)
*该第三方库下载地址:https://github.com/zoujingli/wechat-php-sdk.git
*用这个sdk开发微信相当的快捷方便
*/
$oauth = & load_wechat('Oauth');
$result = $oauth->getOauthAccessToken();
$openid = $result['openid'];
//判断是否获取到openid
if (empty($openid)) {
header('Location: ' . implode('', $options));
} else {
$whereUser['u_openid'] = array("eq",$openid);
$uState = $db_userlist->where($whereUser)->find();
//通过openid判断该用户是否已经存储过数据库
if (!empty($uState)) {
$uid = $uState["u_id"];
//已存,uid存入session
session("uid",$uid);
} else {
//没有存储
$userInfo = $oauth->getOauthUserinfo($result['access_token'],$result['openid']);
//用户基本信息存库,并把uid存入session
/*$data['u_nick'] = $userInfo["nickname"];
$data['u_openid'] = $userInfo["openid"];
$data['u_headpic'] = $userInfo["headimgurl"];
$data['u_addtime'] = time();
*/
$uid = $db_userlist->add($data);
session("uid",$uid);
}
}
}
}
}
} <2>、代理服务代码:
下载地址:https://gitee.com/bulang/tp_wechat_proxy.git
5、完整源码获取:
<1>、扫描右边二维码;
<2>、回复“代理”;
<3>、使用中有问题可以加QQ群讨论:459450213;

步浪
2017-11-20
12552
热门推荐






最新文章