超简明php 微信公众号获取用户openid、昵称头像基本信息

在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

你可能感兴趣的:(master)