H5在微信中获取openid
H5在微信中获取openid
为什么要获取openid
openId是用户在当前公众号下的唯一标识(‘身份证’)。在微信中进行微信分享、支付等操作时需要用户的openid。H5要在微信中获取到用户openid,需要获得微信授权,授权分两种方式:静默授权和手动授权
静默授权:用户使用过程中不知不觉获取到openid,不需要用户手动授权,但是会在原页面进行刷新
手动授权:需要用户点击同意授权,能获取到更多用户信息
(我本次使用的是静默授权,所以详细记录一下静默授权的方式)
获取方法
1、首先,要有一个公众号,以及公众号的appid,然后在公众号后台上设置你的网页授权域名(注意不加http://和https://)
2、静默授权,在进入网页之后,访问微信提供的url,在其中设置授权方式以及回调页面url,返回的页面url中就会包含一个code参数
(注意:此处的url是转码过后的url)
url转码方法:
var url = this.urlencode(url_old);
// 编码函数
urlencode (str) {
str = (str + '').toString();
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
},
具体获取code方法:
// 获取code
getBaseInfos(){
var url_code = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+你的appid+"&redirect_uri="+当前页面url+"&response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect";
window.location.href = url_code;//打开这个链接,你的url后面就会跟上code的参数
}
如果配置参数全部正确,那么此时通过回调地址刷新页面后,你就会看到在地址栏中的code了。
注意:要监测当前url中是否含有code参数,如果包含的话就继续下一步操作,否则页面是一直重复刷新反复获取code。且要注意code码只能使用一次,使用过后就失效了。
3、拿到code之后,需要把code传给后端,后端去请求微信获取openid等参数,前端是获取不到的,微信开发文档中是这么写的:
微信开发文档
后端请求成功后,得到的数据应该是这样的
4、这样我们就能获取到用户的openid进行开发了
开发建议:
判断是否微信内置浏览器,如果是微信内置浏览器的话,去获取用户的openid,否则在外面浏览器中打开获取不到code是会报错的。
1、判断是否是微信浏览器
isWeiXin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
return true;
} else {
return false;
}
}
2、根据以上函数判断值进行不同的操作
if(this.isWeiXin()){
console.log(" 是来自微信内置浏览器")
if(url_s.indexOf("code") > 0 ){// 如果url字符串包含code字段
this.code = cs.code;//则获取code参数值并存入缓存
localStorage.setItem("code", cs.token);
this.getOpenId();//继续下一步获取openid
}else{//否则,就先调取函数获取code
this.getBaseInfos();
}
}else{
console.log("不是来自微信内置浏览器")
}
H5在微信中获取openid相关推荐
- 微信公众号H5页面中获取openId
必要条件 已经认证的公众号(企业号可以,个人号是不能绑定H5的) https认证域名,没有认证的域名微信中不能配置回调地址 微信公众平台认证通过,并创建app 步骤 获取code (需要配置选取sco ...
- Uniapp 接入微信H5登录,并获取openid和unionid 含Sql、PHP完整代码
Uniapp 接入微信H5登录,并获取openid和unionid 实现目标:通过微信H5接入微信获取openid和unionid.用户头像,以及实现登录. 实现目标,如图: 具体实现 MySQL代码 ...
- 微信中获取微信用户信息的2种方式
微信中获取微信用户信息的2中方式 1, 在公众号底部菜单栏地址配置h5地址,如 http://test.dingdong.com/page1 然后前端在所有页面前拦截如login页面,查看是否有tok ...
- 微信授权获取openID等信息,这里简化记录一下
微信授权获取openID等信息 微信测试平台连接:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 授权操作必须用外网(推荐 ...
- H5及微信中唤起app的解决方案
H5及微信中唤起app的解决方案 参考文章: (1)H5及微信中唤起app的解决方案 (2)https://www.cnblogs.com/axl234/p/11082826.html 备忘一下.
- openid java_微信小程序调用微信登陆获取openid及java做为服务端示例
一.微信小程序 第一步:调用 wx.login获取code 文档地址 第二步:判断用户是否授权读取用户信息 文档地址 第三步:调用wx.getUserInfo读取用户数据 文档地址 第四步:由于小程序 ...
- node 微信授权 获取openid
node获取微信授权拿到openid 需要了解的网站 1.微信授权. 先说一下流程(一张图代替所有): 流程步骤: 1.用户同意,获取code. 2.通过code获取网页授权access_toke ...
- 绑定微信以及获取openId
转载自: https://www.cnblogs.com/aiziji/p/7418755.html 由于公司最近在做一个微信公众号的项目,需要获取用户openId,我再一次踏入了微信的坑! 先在这里 ...
- 微信登录获取 openid 失败原因
今天再开发网站微信登录的时候,用 curl_init 无法获取 openid,代码如下 $code = isset($_GET['code']) ? trim($_GET['code']) : ''; ...
最新文章
- 开发环境配置--Ubuntu+Qt4+OpenCV(三)
- harbor的镜像复制功能使用教程
- 苹果台式电脑怎么开机_龙华苹果电脑回收公司,台式电脑回收公司电话
- P4762-[CERC2014]Virus synthesis【PAM,dp】
- Spring集成–配置Web服务客户端超时
- python 反传播_岗位 | 滴滴急招反欺诈数据分析实习生(可转正)!字节跳动+德勤实习生项目热招中...
- java 父类_java 调用父类的父类
- nginx + gunicorn + django 2.0 踩坑
- 我很喜欢电影背后这个看上去很精神分裂的故事,跟影片中那个盘根错节的故事相得益彰。好的艺术作品永远都不可能被简化成纬度单一的说教。
- Spring Security源码解析(一)
- 【EXLIBRIS】随笔记 004
- 【rzxt】笔者支招:电脑的散热大户显卡温度过高如何解决
- linux 查看系统配置
- pygame显示图片的方法_pygame系列教程——1.2加载及显示图片
- 计算机专业120分,【哈尔滨工业大学,专业课120分】跟你唠点真情实感。
- android逆向分析腾讯微视研究无限循环视频嵌套滑动不中断的实现方式
- Naruto图片下载
- 常用的HTTP请求方法
- not exists 中from 后面不同写法带来的效率区别
- 中文垂直搜索引擎、行业搜索引擎大全(最新计137家) (转贴)
热门文章
- mysql注入之dns注入
- 鲁大师2022年Q3电脑排行:御三家各有千秋,Q4将有大变动?
- Win2000/WinXP/Win2003双系统启动
- Android_仿苹果数字键盘以及判断信用卡有效期的Editext
- HTML-spanがtext-align无效的问题
- 自信——深窥内心,磨练经历
- 输入字符串,统计其中大写,小写字母,数字,其他字符。
- debian linux 进入单用户模式 修复系统,在单用户模式/紧急模式下启动Ubuntu 18.04/Debian 9系统...
- 中国节气之数九寒天之说
- 零代码带来的工作和创业机会