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 相关文章推荐
详解Css3新特性应用之过渡与动画
Jan 10 HTML / CSS
基于css3的属性transition制作菜单导航效果
Sep 01 HTML / CSS
CSS3的Flexbox布局的简明入门指南
Apr 08 HTML / CSS
CSS3中的@keyframes关键帧动画的选择器绑定
Jun 13 HTML / CSS
CSS3制作轮播图的一种方法
Nov 11 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
Mar 05 HTML / CSS
canvas实现有递增动画的环形进度条的实现方法
Jul 10 HTML / CSS
HTML5 b和i标记将被赋予真正的语义
Jul 16 HTML / CSS
input元素的url类型和email类型简介
Jul 11 HTML / CSS
详解HTML5中download属性的应用
Aug 06 HTML / CSS
localStorage、sessionStorage使用总结
Nov 17 HTML / CSS
将SVG图引入到HTML页面的实现
Sep 20 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python数据结构之链表详解
2017/09/12 Python
Python yield与实现方法代码分析
2018/02/06 Python
python和go语言的区别是什么
2020/07/20 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
资助贫困学生倡议书
2014/05/16 职场文书
校园文明标语
2014/06/13 职场文书
离职报告范文
2014/11/04 职场文书
工伤私了协议书范本
2014/11/24 职场文书
总经理检讨书范文
2015/02/16 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python