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

本文详细介绍如何在ThinkPHP5框架中配置微信公众号授权登录,包括前端JS代码实现自动弹窗获取用户信息,及后端PHP代码解析授权码并获取用户详细资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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.youkuaiyun.com/shenlingsuifeng/article/details/17419985

### 微信公众号中通过获取用户OpenID来取得用户手机号 为了在微信公众号中实现通过获取用户OpenID 来进一步获得用户手机号,可以按照以下方法操作: #### 获取用户授权码 (Code) 首先,在前端页面引导用户点击按钮同意授权。当用户点击授权按钮后,浏览器会被重定向到微信公众平台提供的 OAuth2 授权登录地址,并携带必要的参数[^2]。 ```html <a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=YOUR_APP_ID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect">点击授权</a> ``` 其中 `snsapi_userinfo` 是用于请求用户基本信息(包括头像昵称等),而要获取手机号则需使用特定的接口。 #### 使用 Code 换取 Access Token OpenID 服务器端接收到回调 URL 中返回的 code 后,可以通过调用微信 API 将其转换成 access_token 及 openid: ```http GET https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code HTTP/1.1 Host: api.weixin.qq.com ``` 成功响应将包含如下字段: - **access_token**: 用来调用其他接口所需的凭证; - **expires_in**: 凭证的有效期; - **refresh_token**: 刷新 access_token 的票据; - **openid**: 用户唯一标识符; - **scope**: 当前所拥有的权限范围; #### 调用 JSAPI 或者 Webview 组件发起手机号验证流程 对于网页应用来说,推荐的方式是在 H5 页面内嵌入 WeUI 提供的标准组件来进行手机号校验。具体做法是先加载 js-sdk 并注入配置信息,再利用 wx.invoke 方法触发 mobileverify 接口完成号码认证过程[^1]。 需要注意的是,此过程中涉及到的安全性隐私保护措施非常重要,开发者应当遵循官方文档中的指导方针实施相应的防护策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值