@Wahson
2016-11-30T10:21:09.000000Z
字数 3399
阅读 1554
前端技术
1、请求访问快塑网页面
https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${REDIRECT_URI}&response_type=code&scope=${SCOPE}&state=type#wechat_redirect
REDIRECT_URI:回调页地址
SCOPE:根据微信开发者平台,SCOPE有两个取值:snsapi_base、snsapi_userinfo,scope=snsapi_base时,微信采用静默授权的方式,自动跳转到回调页(业务页面);scope=snsapi_userinfo是用来获取用户基本信息的,这里需要用户手动同意授权,授权后可以获取用户的基本信息。
2、获取网页授权access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appid}&secret=${appsecret}&code=${code}&grant_type=authorization_code
code:在【1、请求访问快塑网页面】请求后作为回调请求的参数返回(${redirect_url}/?code=xxxxxxx)
3、如果需要获取用户的基本信息,使用scope=snsapi_userinfo,
https://api.weixin.qq.com/sns/userinfo?access_token=${access_token}&openid=${openid}&lang=zh_CN;
access_token,openid:在【2、获取网页授权access_token】请求后返回
4、这里我们不需要获取微信用户的基本信息,在获取网页授权后,微信服务器会返回access_token和openid(微信用户唯一标识)。这里可以根据openid判断用户是否已经绑定了快塑网账号,如果没有绑定,则跳转到我们开发的登录页面,使用快塑账号登录,登录成功后,把openid与此账号的对应关系存到数据库,即完成绑定。下次用户再次访问,就可以根据openid取到快塑账号的信息。
图示:
登录流程图:
授权登录过程:
登陆过程可以尝试使用https,这里有一个免费的https方案(待验证)
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN
前端
1. 登录页面开发 1.5d
2. 订单页面开发 1.5d
3. 微信分享链接研究与开发 2d
4. isuwang-app wap改造:前端代码的压缩、混淆;路由改造,访问控制(移到下一期)服务
1. 数据模型设计 (2h)
2. 微信绑定快塑网接口开发
3. 微信号解绑接口开发
注:用户在修改密码后,需要把绑定信息去掉,让用户重新授权登录;用户在不同设备登录相同的微信账号,是否需要重新授权问题试验
-- 数据模型
use `crm`;
drop table if exists wechat_user_info;
create table wechat_user_info (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`customer_id` INT(11) NOT NULL COMMENT '相关用户id',
`open_id` VARCHAR(255) NOT NULL COMMENT '微信用户的唯一标识',
`access_token` VARCHAR(255) NOT NULL COMMENT
'微信网页授权接口调用凭证',
`access_token_md5` VARCHAR(255) NOT NULL COMMENT
'access_token+timestamp经过md5处理后的串',
`refresh_token` VARCHAR(255) NOT NULL COMMENT '用户刷新access_token',
`nickname` VARCHAR(20) NULL COMMENT '用户昵称',
`sex` TINYINT(1) NULL COMMENT '用户的性别,值为1时是男性,值为2时是女性,值为0时是未知',
`province` VARCHAR(10) NULL COMMENT '用户个人资料填写的省份',
`city` VARCHAR(10) NULL COMMENT '普通用户个人资料填写的城市',
`headimgurl` VARCHAR(255) NULL COMMENT '用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效',
`privilege` VARCHAR(255) NULL COMMENT '用户特权信息,json数组,如微信沃卡用户为(chinaunicom)',
`unionid` VARCHAR(255) NULL COMMENT '只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段',
`is_valid` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否有效,0:否;1:是;',
`created_by` INT(11) null,
`created_at` DATETIME NOT NULL DEFAULT now(),
`updated_by` INT(11) NULL,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用户微信账号关联信息表';
其他:
我们注意到有些网站,如果授权链接是从微信浏览器以外的浏览器发起,网站会提示需要在微信浏览器中访问。这里的判断原理是根据请求头的User-Agent字段。在微信浏览器中访问,User-Agent里会带上"MicroMessenger"。
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_1_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B100 MicroMessenger/6.3.31 NetType/WIFI Language/zh_CN