知识点:
1.全局access_token有效期两小时。最好是使用计划任务编写时间不要太长。
2.首次获取tooken
$app_id=‘自己申请的appid’;
$secret='自己的秘钥’;
KaTeX parse error: Expected 'EOF', got '&' at position 74: …ient_credential&̲appid={app_id}&secret={$secret}";
$url ---------官网上的网址
a r r = j s o n d e c o d e ( c u r l R e q u e s t ( arr=json_decode(curlRequest( arr=jsondecode(curlRequest(url),true); ------转换数组
a c c e s s t o k e n = access_token= accesstoken=arr[‘access_token’];--------取出数组中的tooken值
单个文件链接数据库
$db=new mysqli(‘ip’,'用户名,‘密码’,‘数据库名’);
r e s = res= res=db->query(“insert into access_token(access_token,ctime)values(‘ a c c e s s t o k e n ′ , ′ access_token',' accesstoken′,′time’)”);—添加语句
注意:要用curl模式
/**
使用curl方式实现get或post请求
@param $url 请求的url地址
@param d a t a 发 送 的 p o s t 数 据 如 果 为 空 则 为 g e t 方 式 请 求 r e t u r n 请 求 后 获 取 到 的 数 据 ∗ / f u n c t i o n c u r l R e q u e s t ( data 发送的post数据 如果为空则为get方式请求 return 请求后获取到的数据 */ function curlRequest( data发送的post数据如果为空则为get方式请求return请求后获取到的数据∗/functioncurlRequest(url,$data = ‘’){
$ch = curl_init();
$params[CURLOPT_URL] = $url; //请求url地址
$params[CURLOPT_HEADER] = false; //是否返回响应头信息
$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
p a r a m s [ C U R L O P T T I M E O U T ] = 30 ; / / 超 时 时 间 i f ( ! e m p t y ( params[CURLOPT_TIMEOUT] = 30; //超时时间 if(!empty( params[CURLOPTTIMEOUT]=30;//超时时间if(!empty(data)){
$params[CURLOPT_POST] = true;
$params[CURLOPT_POSTFIELDS] = $data;
}
$params[CURLOPT_SSL_VERIFYPEER] = false;//请求https时设置,还有其他解决方案
p a r a m s [ C U R L O P T S S L V E R I F Y H O S T ] = f a l s e ; / / 请 求 h t t p s 时 , 其 他 方 案 查 看 其 他 博 文 c u r l s e t o p t a r r a y ( params[CURLOPT_SSL_VERIFYHOST] = false;//请求https时,其他方案查看其他博文 curl_setopt_array( params[CURLOPTSSLVERIFYHOST]=false;//请求https时,其他方案查看其他博文curlsetoptarray(ch, $params); //传入curl参数
c o n t e n t = c u r l e x e c ( content = curl_exec( content=curlexec(ch); //执行
curl_close($ch); //关闭连接
return $content;
}
---------------------------------------------------------------------------------------------使用全局access_token
链接数据库
$db=new mysqli(‘同上’);
r e s = res= res=db->query(“select * from access_token where ctime order by ctime desc limit 1”);--------取最新的一条数据
//print_R($res);
a c c e s s t o k e n = access_token= accesstoken=res;
KaTeX parse error: Expected '}', got 'EOF' at end of input: …?access_token={access_token}";---------官网的网址
m e n u u r l = " h t t p s : / / a p i . w e i x i n . q q . c o m / c g i − b i n / m e n u / c r e a t e ? a c c e s s t o k e n = " . menu_url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=". menuurl="https://api.weixin.qq.com/cgi−bin/menu/create?accesstoken=".access_token;------官网的网址
/ j s o n = c u r l R e q u e s t ( json=curlRequest( json=curlRequest(url);
print_r(json_decode($json,true));/
--------微信菜单范例-----------------
$menu="{
“button”: [
{
“name”: “扫码”,
“sub_button”: [
{
“type”: “scancode_waitmsg”,
“name”: “扫码带提示”,
“key”: “rselfmenu_0_0”,
“sub_button”: [ ]
},
{
“type”: “scancode_push”,
“name”: “扫码推事件”,
“key”: “rselfmenu_0_1”,
“sub_button”: [ ]
}
]
},
{
“name”: “发图”,
“sub_button”: [
{
“type”: “pic_sysphoto”,
“name”: “系统拍照发图”,
“key”: “rselfmenu_1_0”,
“sub_button”: [ ]
},
{
“type”: “pic_photo_or_album”,
“name”: “拍照或者相册发图”,
“key”: “rselfmenu_1_1”,
“sub_button”: [ ]
},
{
“type”: “pic_weixin”,
“name”: “微信相册发图”,
“key”: “rselfmenu_1_2”,
“sub_button”: [ ]
}
]
},
{
“name”: “发送位置”,
“type”: “location_select”,
“key”: “rselfmenu_2_0”
},
]
}";
j s o n = p o s t ( json=post( json=post(menu_url, m e n u ) ; p r i n t r ( j s o n d e c o d e ( menu); print_r(json_decode( menu);printr(jsondecode(json,true));
function post( u r l , url, url,str){
$ch = curl_init();
$headers = [
//"Content-Type:text/html;charset=UTF-8", "Connection: Keep-Alive"
];
$params[CURLOPT_HTTPHEADER] = $headers; //自定义header
$params[CURLOPT_URL] = $url; //请求url地址
$params[CURLOPT_HEADER] = false; //是否返回响应头信息
$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
$params[CURLOPT_POST] = true;
$params[CURLOPT_POSTFIELDS] = $str;
$params[CURLOPT_SSL_VERIFYPEER] = false;
$params[CURLOPT_SSL_VERIFYHOST] = false;
curl_setopt_array($ch, $params); //传入curl参数
$content = curl_exec($ch); //执行
echo $content; //输出登录结果
curl_close($ch); //关闭连接
}
/**
使用curl方式实现get或post请求
@param $url 请求的url地址
@param d a t a 发 送 的 p o s t 数 据 如 果 为 空 则 为 g e t 方 式 请 求 r e t u r n 请 求 后 获 取 到 的 数 据 ∗ / f u n c t i o n c u r l R e q u e s t ( data 发送的post数据 如果为空则为get方式请求 return 请求后获取到的数据 */ function curlRequest( data发送的post数据如果为空则为get方式请求return请求后获取到的数据∗/functioncurlRequest(url,$data = ‘’){
$ch = curl_init();
$params[CURLOPT_URL] = $url; //请求url地址
$params[CURLOPT_HEADER] = false; //是否返回响应头信息
$params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
$params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
p a r a m s [ C U R L O P T T I M E O U T ] = 30 ; / / 超 时 时 间 i f ( ! e m p t y ( params[CURLOPT_TIMEOUT] = 30; //超时时间 if(!empty( params[CURLOPTTIMEOUT]=30;//超时时间if(!empty(data)){
$params[CURLOPT_POST] = true;
$params[CURLOPT_POSTFIELDS] = $data;
}
$params[CURLOPT_SSL_VERIFYPEER] = false;//请求https时设置,还有其他解决方案
p a r a m s [ C U R L O P T S S L V E R I F Y H O S T ] = f a l s e ; / / 请 求 h t t p s 时 , 其 他 方 案 查 看 其 他 博 文 c u r l s e t o p t a r r a y ( params[CURLOPT_SSL_VERIFYHOST] = false;//请求https时,其他方案查看其他博文 curl_setopt_array( params[CURLOPTSSLVERIFYHOST]=false;//请求https时,其他方案查看其他博文curlsetoptarray(ch, $params); //传入curl参数
c o n t e n t = c u r l e x e c ( content = curl_exec( content=curlexec(ch); //执行
curl_close($ch); //关闭连接
return $content;
}
-------------自动完成-----------------
这里就不说了。