获得ACCESS_TOKEN
一个简单的方法是直接使用网页调试工具调试该接口。进入网页接口填入你的AppId还有AppSecret。即可以得到ACCESS_TOKEN
编写代码
新建一个php文件并写入下面的代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87<?php
header("Content-type: text/html; charset=utf-8");
define("ACCESS_TOKEN", '填入你刚刚得到的ACCESS_TOKEN');
//创建菜单
function createMenu($data){
//利用curl函数发送post请求
$ch = curl_init();
//post该接口,https://api.weixin.qq.com/cgi-bin/menu/create即为微信创建菜单的接口
curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".ACCESS_TOKEN);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
}
curl_close($ch);
return $tmpInfo;
}
//自定义菜单内容,必须是json格式,button为第一层菜单,sub_button为二级菜单,name为对应值
//注意其类型常用的有两种,一种是直接跳转到URL页面,即view类型;另一种,是发送指令,即click类型,这个click类型相当于发送关键字。
$data = ' {
"button":[
{
"name":"博客",
"sub_button":[
{
"type":"click",
"name":"我的博客",
"key":"jsxw"
},
{
"type":"click",
"name":"沐歌的博客",
"key":"cjzc"
}]
},
{
"name":"推荐",
"sub_button":[
{
"type":"click",
"name":"技术文章",
"key":"jrkp"
},
{
"type":"view",
"name":"段子",
"url":"http://XX/index.php/market/index"
},
{
"type":"click",
"name":"公号推荐",
"key":"jycl"
},
{
"type":"click",
"name":"生活",
"key":"tztd"
}]
},
{
"name":"留言",
"sub_button":[
{
"type":"view",
"name":"关于我",
"url":"http://www.index.php/article/index/id/114"
},
{
"type":"view",
"name":"留言",
"url":"http://www.index.php/article/index/id/115"
}
]
}
]
}';
echo createMenu($data);//创建菜单
?>
最后执行这个文件就可以啦。
通过POST方式把菜单的数据发送到微信服务器,在浏览器中看到的返回提示中,你看到OK的字眼,那么就证明已经成功了。创建完菜单之后,由于微信客户端的缓存要24小时才清理一次,所以你要马上看到效果就需要重新关注你的公众账号。(我测试的时候可以不需要重新关注(仅限于菜单))
解释一下curl是什么?
cURL利用URL语法规定来传输文件和数据的工具,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代理服务器,通过http代理服务器上传文件到FTP服务器等等。
使用curl的步骤
1.初始化,创建一个新cURL资源 curl_init()
2.设置URL和相应的选项 curl_setopt()
3.抓取URL并把它传递给浏览器 curl_exec()
4.关闭cURL资源,并且释放系统资源 curl_close()
我们来采集一个页面,通常情况下,我们会使用file_get_contents()函数来获取:1
2
3
4
5
6
7<?php
$str = file_get_contents('http://****');
//或者是:
$str = file("http://****");
//或者是:
readfile("http://****");
?>
这样我们会发现,我们没有办法有效地进行错误处理,更重要的是我们没有办法完成一些高难度的任务:如:处理cookies,验证,表单提交,文件上传等等。1
2
3
4
5
6
7
8
9
10
11<?php
//1.初始化,创建一个新cURL资源
$ch = curl_init();
//2.设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://*****/");
curl_setopt($ch, CURLOPT_HEADER, 0);
//3.抓取URL并把它传递给浏览器
curl_exec($ch);
//4.关闭cURL资源,并且释放系统资源
curl_close($ch);
?>
上面用到了两个高级选项:CURLOPT_URL和CURLOPT_HEADER,分别代表“需要获取的URL地址”和“启用时会将头文件的信息作为数据流输出”。这样一个简单的就完成了,实际上它还有很多可选项。并且它的效率远远高于file_get_contents().