知识点:
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;
}
-------------自动完成-----------------
这里就不说了。