当前位置: 首页 > 后端技术 > PHP

微信小程序获取微信内文章公众号实战

时间:2023-03-29 20:33:11 PHP

微信小程序中有一个功能需要获取关联微信公众平台的文章进行跳转展示。首先调用微信公众平台的接口获取文章数据(在微信公众平台的控制台中称为素材,因此以下称为素材)。获取素材数据后,发送至微信小程序。实操:首先判断自己是否有调用微信公众平台素材资源的权限。权限列表可以参考这个看是否有相应的权限调用。如果没有,请不要打扰。域名白名单设置:第一步是打开微信公众平台的开发者功能,然后为下次请求打开ip白名单。在开发阶段,自己的电脑其实就是服务器,可以把当前的ip加进去。上线后,添加您的服务器地址。微信公众号的APPSECRET密钥只有启用后才能看到。启动APPSECRET键后,会出现添加ip的白名单。如果不添加会报错:1.获取access_token需要调用微信后台接口公众号。/***获取AccessToken*/publicfunctiongetAccessToken(){//这里缓存了Access_Token,设置了7200秒的过期时间,防止每次重新调用get请求获取$access_token=session('access_token');如果($access_token){返回$access_token;}$appid="AppID";//AppID$appSecret="AppSecret";//AppSecret$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appSecret}";//这个函数显示$result=curl_get_contents($url);$returnData=json_decode($result,true);if(in_array('errcode',$returnData)){//发生错误returnfalse;}else{$access_token=$returnData['access_token'];会话('access_token',$access_token);返回$access_token;}}/***从公众号获取文章*/publicfunctiongetArtical(){//同上,缓存最后的结果,因为关联微信公众号的更新频率没有那么频繁,所以有没有时效性要求$article=session('article');如果($文章){返回$文章;}//调用上面的接口获取AccessToken$access_token=$this->getAccessTokzh();$url="https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token={$access_token}";//返回材料的个数,1~20看个人需要;所以offset=0表示从第一个素材返回;type为素材类型,picture(图片),video(视频),voice(语音),graphic(新闻)$postData=array('type'=>'news','offset'=>0,'count'=>20);//这个函数如下所示$article=curl_post($url,json_encode($postData));$result=json_decode($article,true);if(!$result['item']){returnjson(['code'=>500,'msg'=>'Nodatasync']);}//Returnedfrom在结果中取你需要的数据$returnData=array('title'=>$result['item'][0]['content']['news_item'][0]['title'],//素材标题'introduce'=>$result['item'][0]['content']['news_item'][0]['digest'],//素材内容介绍'url'=>$result['item'][0]['content']['news_item'][0]['url'],//素材链接地址'图片'=>$result['item'][0]['content']['news_item'][0]['thumb_url']//素材缩略图地址);session('文章',$returnData);返回$returnData;}/***curl发出httppost请求*/functioncurl_post($curlHttp,$postdata){$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$curlHttp);curl_setopt($curl,CURLOPT_HEADER,false);curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);//不显示curl_setopt($curl,CURLOPT_TIMEOUT,60);//60秒,超时curl_setopt($curl,CURLOPT_POST,true);curl_setopt($curl,CURLOPT_POSTFIELDS,$postdata);$data=curl_exec($curl);curl_close($curl);返回$data;}/***curl获取请求*/functioncurl_get_contents($url,$timeout=1){$curlHandle=curl_init();curl_setopt($curlHandle,CURLOPT_URL,$url);curl_setopt($curlHandle,CURLOPT_RETURNTRANSFER,1);curl_setopt($curlHandle,CURLOPT_TIMEOUT,$timeout);$result=curl_exec($curlHandle);curl_close($curlHandle);返回$结果;}可以查看相关文档:获取素材列表https://developers.weixin.qq....