标签:update main 完成后 ret 管理员 无法 使用 内容 public
今天一个两年前做的公众号项目 要更改主体,随之而来的是公众号的迁移。 公众号迁移后关注的粉丝也会对应的进行迁移,还会给粉丝发送相关通知。
大体流程如下图
迁移的具体步骤我就不细说了。今天主要说的是 迁移主体后 对应的用户openid也会变化,也就是说你的程序如果公众号登录是以微信openid为唯一标识的话,
那你的用户系统经过一次公众号变更后就会出现问题。 老用户再次授权后 系统可能认为是新用户,而且通过原来的openid 也无法推送模板消息等功能。
微信方面当然也考虑到了相关问题 。给出了相关的接口去处理这个问题,这就是今天说的openid转换接口 。
相关内容如下
1 public function getOpenId(){ 2 $rows=‘100‘; 3 $page=input(‘id‘); 4 $info=\db(‘users‘)->paginate($rows,‘‘,[‘page‘=>$page]); 5 $data= $info->items(); 6 $open_id=array_column($data,‘openid‘); 7 // dump($open_id); 8 9 $postData[‘from_appid‘]=‘******‘; //老的APPID 10 $postData[‘openid_list‘]=$open_id; 11 $config=[ 12 ‘app_id‘ => ‘*******‘, // 新的AppID 13 ‘secret‘ => ‘***********‘, 14 ]; 15 $Wechat=new Application($config);//这里用是Easywechat 16 $Token=$Wechat->access_token; 17 $token=$Token->getToken(); 18 19 $url=‘https://api.weixin.qq.com/cgi-bin/changeopenid?access_token=‘.$token; 20 //$result= $this->curlPost($url,json_encode($postData,true),‘‘,‘‘,‘json‘); 21 $result= $this->post_by_curl($url,json_encode($postData,true)); //自己找一个curl方法 22 $return=json_decode($result,true); 23 $result=$return[‘result_list‘]; 24 25 foreach ($result as $k=>$v){ 26 27 if ($v[‘err_msg‘]==‘ok‘){ 28 $update[‘openid‘]=$v[‘new_openid‘]; 29 $update[‘is_update‘]=1; 30 \db(‘users‘)->where(‘openid‘,$v[‘ori_openid‘])->update($update); 31 } 32 } 33 }
需要注意的是 这个接口一次只能获取100条数据 , 话句话说 你只能一次一百条一百条的更新
当然 你可以选择用消息队列进行处理这个数据 但是我选择的是比较简单的方法 : 前台页面定时器请求
下面附上html代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <script src="/static/js/jquery.js"></script> 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7 <div id="test">1</div> 8 </head> 9 <body> 10 <script> 11 var i=1; 12 function test(){ 13 var url=‘http://百度/portal/test/getOpenId/id/‘+i 14 $.ajax({ 15 url:url, 16 type:‘GET‘, 17 success:function (res) { 18 $(‘#test‘).html(i) 19 } 20 }) 21 i++; 22 } 23 window.setInterval(test,5000); 24 </script> 25 </body> 26 </html>
不过这个时间会比较长
我写完博客才更改了4万条 你可以看一下你服务器的响应执行速度 适当的调整这个参数
标签:update main 完成后 ret 管理员 无法 使用 内容 public
原文地址:https://www.cnblogs.com/sgj123/p/13307665.html