Html5页面获取微信公众号的openid的方法


Posted in HTML / CSS onMay 12, 2020

1、H5页面是运行在微信浏览器的

2、需要与公众号关联(即需要openid)

3、判断需求是否需要弹窗告知用户授权操作

4、获取地址栏参数判断是否有'code',有的话直接传给后台换取openid,没有就跳转微信提供的获取code的链接

5、获取到的openid做本地存储,判断没有openid进行获取openid操作

6、这边的操作是不需要弹出授权框,且code不能重复使用,所以做了关注二维码弹窗且不能关闭弹窗操作

// 强制关注公众号,获取openid
getCode = function () {
    if (sessionStorage.getItem("openid")&&sessionStorage.getItem("openid")!="undefined") {
        return false;
    }
    var code = getUrlParam('code') // 截取路径中的code,如果没有就去微信授权,如果已经获取到了就直接传code给后台获取openId
    var local = window.location.href;
    var APPID = 'xxx';
    if (code == null || code === '') {
        window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + APPID + '&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'
    } else {
        getOpenId(code) //把code传给后台获取用户信息
    }
}
//把code传给后台,得到openid
getOpenId = function (code) {
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: 'xxx',
        data: { code: code },
        success: function (res) {
            if (res.status == -1) {
                // 提示没有关注公众号 没有关注公众号跳转到关注公众号页面
                console.log('您还未关注公众号喔');
                //二维码弹窗
                $('.openPopup').click();
                return;
            } else {
                // 本地存储这个openid,并刷新页面
                sessionStorage.setItem("openid", res.data.openid);
                location.reload();
            }
        }
    });
}
//获取地址栏的参数
getUrlParam= function (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]); return null;
}
//页面执行调用
getCode();

到此这篇关于Html5页面获取微信公众号的openid的方法的文章就介绍到这了,更多相关Html5获取公众号的openid内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
Nov 18 HTML / CSS
关于css中margin的值和垂直外边距重叠问题
Oct 27 HTML / CSS
CSS3 实现时间轴动画
Nov 25 HTML / CSS
HTML5 Web 存储详解
Sep 16 HTML / CSS
HTML5安全介绍之内容安全策略(CSP)简介
Jul 10 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
Jun 23 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
Mar 10 HTML / CSS
HTML5中的网络存储实现方式
Apr 28 HTML / CSS
CSS 圆形进度栏
Apr 06 HTML / CSS
css3实现的加载动画效果
Apr 07 HTML / CSS
浅谈CSS不规则边框的生成方案
May 25 HTML / CSS
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
Jan 18 HTML / CSS
钉钉企业内部H5微应用开发详解
May 12 #HTML / CSS
html5 横向滑动导航栏的方法示例
May 08 #HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
May 08 #HTML / CSS
HTML5 body设置自适应全屏
May 07 #HTML / CSS
iframe与window.onload如何使用详解
May 07 #HTML / CSS
HTML5录音实践总结(Preact)
May 07 #HTML / CSS
详解HTML5.2版本带来的修改
May 06 #HTML / CSS
You might like
在同一窗体中使用PHP来处理多个提交任务
2008/05/08 PHP
PHP定时自动生成静态HTML的实现代码
2010/06/20 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
Laravel 5 学习笔记
2015/03/06 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
简单实现js浮动框
2016/12/13 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
Python只用40行代码编写的计算器实例
2017/05/10 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python和opencv实现抠图
2018/07/18 Python
Python File(文件) 方法整理
2019/02/18 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
省级四好少年事迹材料
2014/01/25 职场文书
六一儿童节主持词
2014/03/21 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
2014年财政所工作总结
2014/11/22 职场文书
公司更名通知函
2015/04/24 职场文书
活动宣传稿范文
2015/07/23 职场文书