url带#号,微信授权,微信分享那些坑
微信授权的方法是,在项目里面配置拦截器(此处可以参考各个框架的拦截器)没有拦截器也可以,反正意思就是跳转到项目里的时候判断微信环境
如果是微信环境,
判断微信环境的方法是
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
// 微信环境
}
此时处于没有登陆的状态或者需要微信授权的状态跳转微信授权链接
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
// 微信环境
var redirect_uri = window.location.protocol + '//' + window.location.host + '/';
var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WECHAT_APP_ID + "&redirect_uri=" + encodeURIComponent(redirect_uri, "UTF-8") + "&response_type=code&scope=snsapi_base&state=10#wechat_redirect"
window.location.href = url;
}
appid 是自己微信公众号的appid,redirect_uri是授权跳转的url,这个域名也要在微信公众号的后台配置授权安全域名,
比如redirect_uri是 http://www.eeeee.com/#/home,授权回来的url微信会带code,此处code是授权成功给的唯一识别码(用户后台查询用户openid)
此时URL是 http://www.eeeee.com/?code=3333333333#/home,因为前端框架的原因,之后页面跳转url只会改变#号后面的值,此处藏了很多坑,比如不能后面又加了code的参数,就会混淆,如http://www.eeeee.com/?code=3333333333#/home?code=44,微信分享也会遇到一些坑
我的一个解决方案是:
授权回来之后,无刷新改变url
var _url = window.location.protocol + '//' + window.location.host + '/#/home;
window.history.pushState({},0, _url)
这样url又变回授权前的样子(要在用过code之后)
目前感觉还是很好用的
最新文章
- bootstrap的table调用本列ID
- 【UWP】UI适配整理
- Leetcode 375. Guess Number Higher or Lower II
- 搭建Android工程的步骤及其第一个安卓程序
- 2014 Super Training #4 B Problem Arrangement --状压DP
- 【php学习】mysql数据库操作
- Sqli-labs less 51
- 高人ozhy111提供的下载资源
- Java-Android 之输入提示框
- 构建高可用web站点(四)
- Ruby中,&;:(ampersand colon)的用法
- ASP.NET下使用xml反序列化、缓存实现个性化配置文件的实时生效
- Solidity调试 - 实现变量打印
- Hibernate 介绍及其 环境搭建
- maven环境搭建及创建maven项目
- LongAdder 测试
- sklearn使用——梯度下降及逻辑回归
- RabbitMQ广播:topic模式
- iOS 计算所有标注的经纬度范围 来确定地图显示区域
- git 入门教程之本地和远程仓库的本质
热门文章
- Android Studio JNI 开发简单案例
- 【BZOJ-3998】弦论 后缀自动机
- 实例解析防抖动(Debouncing)和节流阀(Throttling)
- Android InputStream接收 字符串乱码 问题
- canvas-渐变文字
- Swift_提醒框
- C# 如何强制关闭WINWORD进程
- XML文件(2)--使用DOM4J示例
- Ubuntu下通过SSH远程登录服务器的方法
- 报错com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0