怎样获取access_token?素材图片图文上传?

大家都知道微信开发都需要有自己的一个后台界面,用来发布内容,管理内容,其中素材管理是不可缺少的,那么怎样来进行素材管理图片和图文呢,其中非常关键的就是获取access_token,接下来给大家具体分享一下。

首先我们在公共模板common下新建一个function.php文件,

<?php
//获取正在使用的公众号
function getCurrentMp(){
	$mp = M('mp')->where("is_use = 1")->find();
	return $mp;
}

//获取access_token
function getAccess_token(){
	$mp = M('mp')->where("is_use = 1")->find();
	if (empty($mp)) return false;

	$id = $mp['id'];

	if (empty($mp['access_token']) || $mp['expire_time']<time()) {
		$appid = $mp['appid'];
		$appsecret = $mp['appsecret'];
		$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;
		// echo $url;
		include APP_PATH. 'LaneWeChat/lanewechat.php';
		$arr = \LaneWeChat\core\Curl::callWebServer($url, '', 'GET');
		if (isset($arr['access_token'])) {
			$data['access_token'] = $arr['access_token'];
			$data['expire_time'] = $arr['expires_in'] + time() - 200;
			M('mp')->where("id=$id")->save($data);
			return $arr['access_token'];
		}else{
			return false;
		}
	}else{
		return $mp['access_token'];
	}

}

我们获取了access_token后,在以后的上传图文图片时就可以调用此方法了。

新建一个MaterialController.class.php文件

<?php
namespace Home\Controller;
use Think\Controller;
use LaneWeChat\Core\Curl;
class MaterialController extends Controller
{
	public function index($type=''){
		if(empty($type)){
			$type='image';
		}
		$this->assign('type',$type);
		$this->display();
	}
	//显示新增页面素材
	public function addmeterial($type=''){
		if(empty($type)){
			$type='image';
		}
		$this->assign('type',$type);
		$this->assign('action',$type.'_submit');
		$this->display();
	}

	public function upload(){
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize = 3145728 ;// 设置附件上传大小
        $upload->exts = array('jpg','gif','png','jpeg');// 设置附件上传类型
        $upload->rootPath = './Public/Upload/'; // 设置附件上传根目录
        $upload->savePath = ''; // 设置附件上传(子)目录
        // 上传文件
        $info = $upload->uploadOne($_FILES['file']);
        if(!$info) {// 上传错误提示错误信息
        $this->ajaxReturn(array('code'=>1,'msg'=>$upload->getError()));
        }else{// 上传成功
        // $this->success('上传成功!');
        $file = './Public/Upload/' . $info['savepath'] . $info['savename'];
        $this->ajaxReturn(array('code'=>0,'msg'=>'上传成功','url'=>$file));
        }
    }

	//图片上传公众号服务器
	public function image_submit(){
		$url=I('post.url');
		// echo $url;
		// echo "<br>";
	
		$file = realpath($url);
		// echo $file;
		// exit;
		$staus_type=I('post.staus_type');

		$Access_token=getAccess_token();

		include APP_PATH . 'LaneWeChat/lanewechat.php';

		if($staus_type==0){
			$url="https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$Access_token&type=image";
		}else{
			$url="https://api.weixin.qq.com/cgi-bin/material/add_meterial?access_token=$Access_token$type=image";
		}
		$data['madia']='@'.$file;

		// dump($data);
		// exit;
		$ret=Curl::callWebServer($url,$data,'post',true,false);
		$this->ajaxReturn($ret);

	}

	//图文上传公众号服务器
	public function news_submit(){
		$url = I('post.url');//图片在本地服务器上的位置
		//相对路径->绝对路径
		// echo $url;
		// exit;
		$file = realpath($url);
		$title = I('post.title');//标题
		$content = I('post.content');//内容
		$link = I('post.link');//链接

		$accessToken = getAccess_token();
		include APP_PATH . 'LaneWeChat/lanewechat.php';
		//上传永久图片API
		$api = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$accessToken&type=image";

        $data['media'] = '@' . $file;
        $ret = Curl::callWebServer($api,$data,'post',true,false);

       if(isset($ret['media_id'])){
       	$arr = array(
       		'title'=>$title,//标题
       		'thumb_media_id'=>$ret['media_id'],//图文消息的封面图片素材id(必须是永久mediaID)
       		'author'=>'gqy',//作者
       		'digest'=>'aaa',//图文消息的摘要
       		'show_cover_pic'=>1,//是否显示封面,0为false,即不显示,1为true,即显示
       		'content'=>$content,//图文消息的具体内容
       		'content_source_url'=>$link//图文消息的原文地址
       		);
       	$data['articles'][] = $arr;

       	$data = json_encode($data,JSON_UNESCAPED_UNICODE);
       	// echo $data;
       	// exit;

       	$api = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=$accessToken";
       
       	$ret = Curl::callWebServer($api,$data,'post',true,false);
       	if(isset($ret['media_id'])){
       		$mp = $this->mp;
       		$arr['mp_id'] = $mp['id'];
       	}
       	$this->ajaxReturn($ret);
       }

	}
}


以上就是怎样获取access_token,以及素材管理中怎样上传图片图文的相关代码,大家赶紧拿出电脑来试一下吧。



阅读更多
上一篇微信开发入门,关键字回复
下一篇怎样自动回复文字、 图文 、图片 消息?
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

怎样获取access_token?素材图片图文上传?

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭