Firefly开源社区
标题: 微信网页开发流程 [打印本页]
作者: lxp 时间: 2017-2-16 14:24
标题: 微信网页开发流程
本帖最后由 lxp 于 2017-2-16 14:52 编辑
微信网页开发流程
一、微信网页开发流程
二、开发工具
三、公众号配置以及微信网页授权
四、移动端开发
五、代码调试工具
1.微信网页开发流程
2.开发工具推荐
sublime+Mysql+Apache+chrome或sublime+微信web开发者工具v0.7+Mysql+Apache
3.公众号配置以及微信网页授权
接入微信公众平台开发,开发者需要按照如下步骤完成:
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
参数 | 描述 |
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,可以依据自身业务逻辑进行响应,如回复消息。如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。
1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;
2、授权回调域名配置规范为全域名;
1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
1、上面已经提到,对于以snsapi_base为scope的网页授权,就静默授权的,用户无感知;
2、对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。
具体而言,网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
关于网页授权access_token和普通access_token的区别
1、微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
2、其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。
4.移动端开发
4.1移动端字体单位font-size选择px还是rem
对于需要适配各种移动设备,使用rem,例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备
4.2移动端touch事件
当用户手指放在移动设备在屏幕上滑动会触发的touch事件
4.3移动端click屏幕产生200-300 ms的延迟响应
fastclick可以解决在手机上点击事件的300ms延迟
zepto的touch模块,tap事件也是为了解决在click的延迟问题
触摸事件的响应顺序
1、ontouchstart
2、ontouchmove
3、ontouchend
4、onclick
完全不使用click事件,用touch事件代替
4.4移动端禁止选中内容
如果你不想用户可以选中页面中的内容,那么你可以在css中禁掉:
- <blockquote>.user-select-none {
复制代码
4.5屏幕旋转的事件和样式
事件 window.orientation,取值:正负90表示横屏模式、0和180表现为竖屏模式;
- <blockquote>window.onorientationchange = function(){
复制代码样式
4.6比较重要的meta标签
- <blockquote><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">
复制代码
第一个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;
第二个meta标签是iphone设备中的safari私有meta标签,它表示:允许全屏模式浏览;
第三个meta标签也是iphone的私有标签,它指定的iphone中safari顶端的状态条的样式;
第四个meta标签表示:告诉设备忽略将页面中的数字识别为电话号码
4.7少用float属性
因为移动端需要适配的设备屏幕大小很多,所以用float属性可能影响显示效果。
如果浏览器支持flex布局,可以使用flex布局。
4.8可点击的数据多使用a标签包裹
5.代码调试工具
本地调试可以使用chrome调试(F12 再点击手机模式)
测试代码在微信浏览器上运行的情况可以使用
微信web开发工具0.7
作者: 暴走的阿Sai 时间: 2017-2-16 14:35
支持技术贴
欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) |
Powered by Discuz! X3.1 |