PHP微信用户绑定网站用户实现原理:因为对于每个公共号,每个微信用户的open_id是固定不变的,也就是说可以利用网站用户id与微信用户的open_id建立一一对应关系。废话不多说,直接看代码:
数据库设计如下:
当用户关注的时候,当用户信息添加到微信用户表
case ‘SUBSCRIBE’: //用户订阅事件
$openid = $this->xmlObj->FromUserName;
$UserController=new UserController();
$rs=$UserController->addUser($openid);
添加之前判断数据表中是否存在该用户信息,没有则添加,否则更新
获取用户信息的方式如下:
$token=$this->getTooken();
$url = “https://api.weixin.qq.com/cgi-bin/user/info?access_token=”.$token.”&openid={$openid}&lang=zh_CN”;
$userInfo = $this->https_request($url);
其实,是一个很关键的步骤,再绑定页面提交数据时候,如何获取用户的openid呢?都知道我们是通过openid来建立绑定呢?但是微信怎样才能让我获取用户的openid呢?
这就需要进行oauth认证 ,即:网页授权获取用户基本信息
再次我将其封装在方法里:
我选择的是:
scope为snsapi_userinfo,也是静默授权,用户无感知。
/**
* 通过code值获取open_id
* @param unknown $code
*/
public function getOpenIdByCode($code){
$appid=$this->appid;
$secret=$this->appsecret;
$queryUrl=’https://api.weixin.qq.com/sns/oauth2/access_token?appid=’.$appid.’&secret=’.$secret.’&code=’.$code.’&grant_type=authorization_code’;
$res=$this->https_request($queryUrl);
$openid = $res[‘openid’];
return $openid;
}
最后通过open_id检索用户表,将该行字段中uid改为需要绑定的uid即可。
转载请注明来源网站:blog.ytso.com谢谢!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14693.html