在TP5中配置好 config.php 的appid和 appsecret
如果没有授权信息的,就网页首页自动弹窗获取信息,代码如下。
// 获取GET参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
// 获取授权
function getCode(){
var appid = '{php}echo config("wxpay.appid");{/php}';
var url = '{php}echo config("app_host");{/php}';
location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appid+'&redirect_uri='+url+'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect';
}
// 页面加载完毕事件
$(document).ready(function(){
{if condition="empty($my->weixin)"}
// 授权获得code
var code = getUrlParam('code');
if(code){
// 存在就获取信息
$.ajax({
url: '/api/user/get_mp_user/'+code,
type: 'GET',
success: function(x){
console.log(x);
// alert(JSON.stringify(x));
}
});
}else{
getCode();
}
{/if}
});
PHP后端代码
// 获取公众号用户信息
// @route('/api/user/get_mp_user/:code','get')
public function get_mp_user($code){
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.config('wxpay.appid').'&secret='.config('wxpay.appsecret').'&code='.$code.'&grant_type=authorization_code';
$json = file_get_contents($url);
$arr = json_decode($json,true);
if(empty($arr['openid'])){
return make_return_json(500,'获取失败');
}
$token = $arr['access_token'];
$openid = $arr['openid'];
//拿到token后就可以获取用户基本信息了
$url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$token.'&openid='.$openid;
$json = file_get_contents($url);//获取微信用户基本信息
$arr = json_decode($json,true);
if(empty($arr['nickname'])){
return make_return_json(500,'获取信息失败');
}
$this->userData->weixin = $arr;
$this->userData->save();
return make_return_json(200,'success',$arr);
}
参考:https://www.cnblogs.com/txw1958/p/weixin76-user-info.html
参考:https://blog.csdn.net/shenlingsuifeng/article/details/17419985