微信小程序中有一块功能是需要从关联的微信公众平台中获取文章进行跳转展示,先调用微信公众平台的接口,获取文章数据(在微信公众平台控制台,叫素材。所以下面统一叫素材)。获取素材数据后再发送给微信小程序。 实际操作:首先确定是否有权限 拥有调用微信公众平台的素材资源的权限。 
权限一览表,可以参考这个看看,自己是否有相应的权限进行调用。如果没有就别折腾。
域名白名单设置:

第一步是开起微信公众平台的开发者功能,接着就是为接下来的请求开起ip白名单,开发阶段其实你自己的电脑就是服务器,把当前的ip添加进去就可以了,上线后接着添加你的服务器地址。

微信公众号的APPSECRET这个密钥要启用才可以看到,在开始APPSECRET密钥之后,会出现一个添加ip白名单。如果不添加会报错:

1.获取access_token 要调用微信公众号的后端接口,这个是一切的开始,要调用就要用到你的AppID和AppSecret,调用微信公众平台的获取AccessToken接口来实现。 /** * 获取AccessToken */ public function getAccessToken(){ $access_token=session('access_token'); if($access_token){ return $access_token; } $appid="AppID"; $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)){ return false; }else{ $access_token=$returnData['access_token']; session('access_token',$access_token); return $access_token; } }
public function getArtical(){ $article=session('article'); if($article){ return $article; } $access_token=$this->getAccessToken(); $url="https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token={$access_token}"; $postData=array( 'type'=>'news', 'offset'=>0, 'count'=>20 ); $article=curl_post($url,json_encode($postData)); $result=json_decode($article,true); if(!$result['item']){ return json(['code' => 500, 'msg' => '暂无数据同步']); } $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'], 'picture'=>$result['item'][0]['content']['news_item'][0]['thumb_url'] ); session('article',$returnData); return $returnData; } /** *curl做http的post请求 */ function curl_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); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata); $data = curl_exec($curl); curl_close($curl); return $data; }
function curl_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 ); return $result; }
|