需求:在一个活动中,每个人扫码关注后,可以选择一个水浒人物,绑定到自己身上,然后大屏幕滚动的时候名字要把水浒的花名带上。需求来的很急,只用能一些奇葩的方式实现。
现有的公众号是由微擎管理的,就用PHP解决了。
添加了一张水浒表:
DROP TABLE IF EXISTS `ims_shuihu108`;
CREATE TABLE `ims_vnel_shuihu108` (
`id` int(3) NOT NULL,
`seq` varchar(16) COLLATE utf8_bin NOT NULL COMMENT '108中的排名,例:第一',
`starname` varchar(16) COLLATE utf8_bin NOT NULL COMMENT '三十二天罡,七十二地煞,例;天魁星',
`nickname` varchar(16) COLLATE utf8_bin NOT NULL COMMENT '花名,例:及时雨',
`truename` varchar(16) COLLATE utf8_bin NOT NULL COMMENT '真实姓名,例:宋江',
`description` varchar(1024) COLLATE utf8_bin NOT NULL COMMENT '性格描述',
`img` text COLLATE utf8_bin COMMENT '头像',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
粉丝表添加2个字段
-- 存储花名
alter table ims_mc_mapping_fans add nickname2 int(3);
-- 存储真实姓名
alter table ims_mc_mapping_fans add nickname3 varchar(64);
网页授权获取用户基本信息
https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
公众号添加一个菜单
菜单名称:花名选择
菜单动作:链接
链接地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx674a526300000000&redirect_uri=http%3a%2f%2fwq.xxx.com%2fshuihu%2ftest.php&response_type=code&scope=snsapi_base&state=123#wechat_redirect
在微信中点击这个菜单后(不弹出授权页面,直接跳转,只能获取用户openid),跳转到 redirect_uri 指定的地址中。这个地址需要 urlencode,并且会在地址后面加code参数,例:http://wq.xxx.com/shuihu/test.php?code=0064f7afef7af7b395147bfeffffffff&state=123
test.php
$code = $_GET['code'];
$weixin = file_get_contents("https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx674a52637be305d0&secret=db4d914c0bbee96c3cbe241b8f97c138&code=".$code."&grant_type=authorization_code");
$jsondecode = json_decode($weixin);
$array = get_object_vars($jsondecode);
$openid = $array['openid'];
echo $openid;
剩下的就没什么可记录的了,输出水浒花名列表,选择后提交表单,数据插入DB。