通过微信授权接口,获取用户微信账户信息

微信官方最近已经回收了前端通过getUserInfo接口获取微信信息的功能,现在推荐的办法是使用后端解密获取,具体办法如下:

第一步:通过jscode2session获取openid

$appid = '你的appid';

$secret = '你的secret';

$js_code = $params['code']; //前端传给后端的js_code

$url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' . $appid . '&secret=' . $secret . '&js_code=' . $js_code . '&grant_type=authorization_code';

$getOpenid = curl_init();

curl_setopt($getOpenid, CURLOPT_URL, $url);

curl_setopt($getOpenid, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($getOpenid, CURLOPT_HEADER, 0);

curl_setopt($getOpenid, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($getOpenid, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($getOpenid, CURLOPT_CONNECTTIMEOUT, 10);

$resultSession = curl_exec($getOpenid);

$disposeData = @json_decode($resultSession,true); //获取请求接口后的数据,拿到openid和session_key。

第二步:通过session_key,encryptedData,iv获取解析微信用户信息

$openid = $disposeData['openid'];

$sessionKey = $disposeData['session_key'];

/**

* 分割线,上方获取sessionKey,下方使用sessionKey进行解密

*/

$encryptedData = $params['encryptedData']; //前端传

$iv = $params['iv'];//前端传

$encryptedData = str_replace(' ', '+', $encryptedData);

//此处接收到微信发送的数据时,PHP会将数据中的+转化为空格,此处需要将空格转化为+

$iv = str_replace(' ', '+', $iv);

$aesKey = base64_decode($sessionKey);

$aesIV = base64_decode($iv);

$aesCipher = base64_decode($encryptedData);

$result = openssl_decrypt($aesCipher, 'AES-128-CBC', $aesKey, 1, $aesIV);

$userData = @json_decode($result,true);

结果中的$userData就是获取的微信用户数据。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值