上两个星期做了一个公司用于推广的小活动,选择了Vue的单页面应用。【Vue单页面应用+微信网页开发】套餐赠送了超值大坑,在这里给大家分享一下我的辛酸,啊不,填坑记录。主要是前端填坑的实现,后台方面没有太多涉猎,小白所记,不正确、不准确的还请多多指教。
坑的方位:
1、微信网页授权登录(前后端分离导致的跨域问题)
2、接入JS-SDK实现分享等功能(history模式副带的页面刷新问题和iOS、Android获取url方式不同的兼容问题)
微信网页授权登录(前后端分离导致的跨域问题)
用户在微信客户端中访问我们的域名,公众号通过微信网页授权机制来获取用户基本信息,进而实现业务逻辑。
由于采用的Vue单页面应用框架(vue-router的history模式)、前后端分离模式,微信授权中涉及签名和token的逻辑在前端ajax请求都会遇到跨域问题,所以要依赖服务端完成。
具体见官方文档:微信网页授权尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
具体解决方式:
所以在浏览器302回我们的业务域名之前的一系列操作都要交给后台处理,而通常请求业务域名到达反向代理服务器时就会接收到Nginx返回的页面资源了,所以配置好Nginx让客户端在请求业务域名的时候将请求转到后台,后台进行重定向去实行上面的3步。具体后台实现授权登录的做法请参见后台同事写的:前(单页面)后端完全分离的OAuth2授权和分享
值得注意的是,一开始将业务域名的请求