微信集成那些事儿

移动端判断浏览器是否为微信浏览器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* @method:
* @description: 判断当前是否在微信浏览器内
* @param {type}
* @returns: true or fasle
*/
export const confirmPlatform = () => {
const ua = navigator.userAgent.toLowerCase();
// match返回的是一个数组 不能用全等
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
return true;
}
return false;
};

移动端微信授权

  • 在h5中,微信授权有一个比较坑的地方,就是授权现在的样式是一个弹窗,但其实那是微信的一个页面,
    当你在移动端中,跳出显示微信的授权弹窗时,所有的逻辑已经不受你的控制

  • 所以在移动端,我们无法做轮询去请求当前授权的状态是成功还是失败

  • 于是,我们采取,后端将配置的微信的return url通过去取Referer获取到发起请求的页面,在微信授权成功或失败之后回退到之前的页面,而前端通过判断这个url存不存在codestatus这两个query值来确定是否是从微信回退回来的

  • 确定之后,如果是从微信回退回来的,就把code和status发给后端,后端通过这个两个值去获取用户的open id等信息