收藏
回答

部分用户获取不到unionid?

部分用户获取不到unionid,

1、小程序首先使用getuserinfo获取用户信息获取到了encryptedData和iv

2、获取登录的code,与上面获取到的encryptedData和iv一起传给的后端

3、后端通过code获取用户信息,判断不存在unionid的时候,根据获取的session_key、encryptedData和iv解密获取unionid

但是部分用户还是存在获取不到unionid的情况。

$code = $request -> post('code');
$iv = $request -> post('iv');
$encryptedData = $request -> post('encryptedData');
if(!$code) return jsonError('非法操作');
$x_appSecret         = '****************************';
$x_appId             = '****************************';
$url  = "https://api.weixin.qq.com/sns/jscode2session?appid={$x_appId}&secret={$x_appSecret}&js_code={$code}&grant_type=authorization_code";
$user_data           = json_decode(Curls::curl($url), true);
if(empty($user_data['unionid'])){
    $num_data = '';
    $pc = new WXBizDataCrypt($x_appId,$user_data['session_key']);
    $errCode = $pc->decryptData($encryptedData, $iv, $num_data);
    $user_data_temp = json_decode($num_data,true);
    $user_data['unionid'] = $user_data_temp['unionId'];
}
$user_info = Xxxxx::where(['xxxxxxx' => $user_data['unionid']])->find();
//代码可以走到这里,说明$user_data_temp里面存在unionId这个键值的,但是返回的unionId是一个空值
//
回答关注问题邀请回答
收藏
登录 后发表内容
问题标签