微信公众号开发获取微信用户openid及访问url身份认证方式

微信公众号h5获取用户openId的方法和步骤 微信h5静默、非静默授权获取用户openId的方法和步骤: 一、openId是什么? openId是用户在当前公众号下的唯一标识(‘身份证’),就是说通过这个openId,就能区分在这个公众号下具体是哪个用户。 二、openId有什么用? 假如用户A在当前公众号下购买了一件商品,用户的下单信息肯定要存储到后台数据库,那根据什么进行存储呢?openId是用户在当前公众号下的唯一标识,通过openId和用户的下单购买信息进行键值对的数据绑定。那么我要查询该用户购买过什么商品,就能够通过openId去查询 阅读详情

技术要点:

1、如何获取业务系统中用户身份标识。

OPENID是微信公众号中用户的唯一标识,通过OPENID与业务系统中USRID建立一对一的对应关系,这样获取到了OPENID也就能知道所对应的USRID,从而获取对应权限的业务数据。

OPENID获取地址:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSECRET&code=CODE&grant_type=authorization_code

2、OPENID如何在页面建传递

由于请求获取OPENID是一个耗时的操作,为了加速页面响应速度,提升用户体验,不可能在每个页面中都请求一次。那么怎么保存传递这个OPENID呢,一种方法是用户首次访问时,调用微信接口获取OPENID,然后将OPENID写入服务器端的Cookies,通过Cookie进行OPENID信息传递。下面讲解这种方式具体实施:

(1)添加拦截器,拦截需要获取OPENID进行身份识别的controller,判断请求的cookies信息中是否含有openid,如果有直接放行,否则转向获取OPENID的url。

 * <P>微信相关请求拦截器</P>
 * 
 * @version 1.0
 * @author wangpf
 * @date 2018年5月2日 下午7:07:39
 */
public class OAuth2Interceptor extends HandlerInterceptorAdapter {
	/**
	 * 日志对象
	 */
	protected Logger logger = LoggerFactory.getLogger(getClass());
	// 从配置文件中读取域名
	public static String domainUrl = Global.getConfig("wechat_domain_url");
	public static String domain = "http://"+Global.getConfig("wechat_domain");

	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		String uri = request.getRequestURI();
		logger.debug("OAuth2Interceptor:"+uri);
		//兼容旧菜单url,直接放行
		String code = request.getParameter("code");
		if(StringUtils.isNotEmpty(code)) {
			return true;
		}
		
		//判断cookie中是否有openid,没有则转向获取openid的url
		Cookie[] cookies = request.getCookies();
		String openid = null;
		// 判断cookie中是否存在openid 若存在则直接跳过,不存在则获取一次
		if (cookies != null) {
			for (Cookie cookie : cookies) {
				if (cookie.getName().equals("openid")) {
					openid = cookie.getValue();
				}
			}
		}
		if (StringUtils.isEmpty(openid)) {
			response.sendRedirect(domainUrl + "/f/wechat/oauth/oauth2Api?resultUrl=" + domain
					+ uri);
			return false;
		} else {
			return true;
		}
	}

	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
	}

	public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
	}
}

该Controller为获取微信用户OPENID的核心Controller,首次访问时调用微信接口获取OPENID,然后设置cookie到客户端(Cookie userCookie=new Cookie("openid",openid))。设置cookie过期时间为负数,表明当用户关闭浏览器的时候自动清空cookie。之后的用户请求可以直接从cookie中获取openid。

/**
 * <P>获取/保存OPENID相关Controller</P>
 * 
 * @version 1.0
 * @author wangpf
 * @date 2018年5月2日 下午7:20:38
 */
@Controller
@RequestMapping(value = "${frontPath}/wechat/oauth")
public class OAuth2Controller extends BaseController {

    //从配置文件获取主域名
    public static String domainUrl = Global.getConfig("wechat_domain_url");
   /**
     * 拼装并转向获取OPENID的url
     * 示例:
     * https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx74dfe3afa0ebafe3
     * &redirect_uri=http://www.xxxx.com/evcg/f/wechat/qrcode?response_type=code
     * &scope=snsapi_base&state=1#wechat_redirect
     * 
     * @param request
     * @param resultUrl
     * @return
     */
    @RequestMapping(value ="oauth2Api")
    public String oauth2API(HttpServletRequest request, @RequestParam String resultUrl) {
        StringBuffer redirectUrl = new StringBuffer();
        if (resultUrl != null) {
            String backUrl = domainUrl+"/f/wechat/oauth/oauth2MeUrl?oauth2url="+resultUrl;
            String appid = Global.getConfig("wechat_appid");
            //组装获取OPENID的url
            redirectUrl.append("https://open.weixin.qq.com/connect/oauth2/authorize?");
            redirectUrl.append("appid=").append(appid);
            redirectUrl.append("&redirect_uri=").append(backUrl);
            redirectUrl.append("&response_type=code");
            redirectUrl.append("&scope=snsapi_base&state=1#wechat_redirect");
        }
        //转向获取OPENID的url
        return "redirect:" + redirectUrl.toString();
    }

    /**
     * 获取微信用户标识OPENID
     * @param request
     * @param response
     * @param code
     * @param oauth2url
     * @return
     */
    @RequestMapping(value = "oauth2MeUrl")
    public String oauth2MeUrl(HttpServletRequest request,HttpServletResponse response, 
    		@RequestParam String code, @RequestParam String oauth2url) {
        try {
        	request.setCharacterEncoding("utf-8");
        	response.setCharacterEncoding("utf-8");
			HttpSession session = request.getSession();
			session.setAttribute("code",code);
			//通过code获取微信用户openid存储在cookie中的信息
			String openid = WeixinUtil.getOpenId(code);
			Cookie userCookie=new Cookie("openid",openid);
			userCookie.setMaxAge(-1);
			userCookie.setPath("/");
			response.addCookie(userCookie);
		} catch (Exception e) {
			e.printStackTrace();
		}
        //转向原始请求url
        return "redirect:" + oauth2url;
    }
}




微信公众号平台开发(三):几大微信接口的调用 文章结构 1、怎么调用微信高级接口 2、调用微信高级几大实例 2.1、调用自定义菜单接口 2.2、客服接口 2.3、生成二维码 3、获取非微信功能接口,如天气网的天气接口、股票网站的信息接口。 1、怎么调用微信高级接口微信高级接口和微信普通接口的区别后台服务器可以调用微信的接口与微信用户进行讯息的通信,这样的行为就是在调用微信的接口,这些接口是基础接口,你不需要任 阅读详情

相关推荐

微信登录全流程解析:从OAuth2.0授权到用户系统设计实战

OAuth2.0是一种开放授权标准协议,广泛应用于第三方应用授权场景。其核心原理是通过授权码模式,在资源所有者、客户端和授权服务器之间安全传递访问权限,避免用户凭证直接暴露。在技术价值上,OAuth2.0实现了安全的单点登录和用户身份联邦,极大提升了用户体验和系统安全性。在移动互联网领域,微信登录作为典型的OAuth2.0实现,已成为App标配功能。然而,许多开发者在实践中常混淆授权与鉴权概念,误将微信返回的openid直接作为系统唯一用户标识,导致出现账号串号、数据错乱等严重问题。实际上,微信OAuth2

weixin_34072637的博客 390

如何获取微信公众号openid

如何获取微信公众号openid

九八呀呀呀呀 3万+

Keycloak集成微信登录:社区方案实践与全流程避坑指南

OAuth2.0作为现代身份认证与授权的核心协议,通过授权码模式实现了安全、标准的第三方应用登录流程。其核心原理在于通过授权服务器在资源所有者与应用之间建立信任桥梁,避免了密码的直接暴露。这一技术为构建统一身份认证与访问管理(IAM)体系提供了基础,尤其在多应用、多平台的企业环境中,能够显著简化用户管理、提升安全性并改善登录体验。基于开源IAM解决方案Keycloak,开发者可以快速集成各类社交登录,实现集中式的身份治理。本文聚焦于Keycloak集成微信社交登录的工程实践,详细剖析了如何利用社区开源插件,

weixin_30394669的博客 476

微信公众号获取openid、开放接口调用流程操作指南

需要先进行微信 OAuth 2.0 授权,获取code;然后根据 code、appId、appSecert 获取用户在此公众号下的唯一标识 openid

m0_72791534的博客 1万+

微信服务号网页h5自动登录实战

code 换 openid → openid 查绑定 → 绑定查用户 → 生成JWT但真正让这条链路"合格"的,是一些非功能性的设计选择设计点做法原因scope选择而非userinfo不需要用户信息,只要openid做身份标识绑定前置必须先PC端扫码绑定H5场景不允许自动注册,安全考量Token生成直接调用OAuth2Util而非走OAuth2端点微信已验证身份,无需多余交互Token传递302重定向带在URL上H5跨页面通信最简单方案异常处理失败也redirect而非抛异常。

2302_80395359的博客 246

豆包如何合规接入微信?两条安全可行的协同路径

AI助手与即时通讯工具的协同是企业提效与个人工作流优化的基础需求。其核心原理在于绕过封闭生态的直接对接限制,转而依托官方开放能力(如企业微信API)或用户主动触发机制(如iOS快捷指令),实现消息内容的受控流转与智能生成。这种方案不突破平台安全边界,具备高稳定性与低风控风险,技术价值体现在提升响应效率、降低人工重复劳动、保障数据合规性。典型应用场景包括客服自动建议回复、销售话术生成、个人微信消息摘要与润色等。本文聚焦‘豆包+微信’这一高频搜索组合,详解无需越狱、不依赖非官方接口的两条真实落地路径。

weixin_33747129的博客 365

微信公众号获取openId——开发阶段

跳转后可以看到地址栏中出现了两个参数,code和state,这个时候,我们就可以拿到我们需要的code。注意:这个redirect_uri填写的地址需要在公众号或者是测试号中网页账号中进行配置。获取到code后,就可以通过第二个链接,将所需的内容填写后,获取到openId了。获得微信的openid,需要先访问微信提供的一个网址来获取code。打开后在地址栏中输入第一个URL地址,我这边后面跟的是跳转的网页。第一个链接需要在微信客户端打开,可以选择微信开发者工具。

Master_Tang的博客 8867

第三方登录后端校验用户真实性(包含微信、QQ、微博)

移动端第三方登录,往往最后会传递unionid给后端,作为第三方用户的唯一标识,但后端不能轻易相信前端传过来的就是真实的第三方用户,所以需要对第三方用户的真实性进行校验,需要第三方登录的access_token,其中微信多一个openid。 相关官方文档:微信、QQ、微博 封装方法如下:(php语言tp5框架 需要继承Curl工具类 返回值为第三方用户唯一...

李维山的博客 1627

微信公众号开发(消息推送)

微信公众号开发 微信公众号简介 微信公众号分为服务号、订阅号、企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以。 我们所说的微信公众号开发指的是订阅号和服务号。关于订阅号和服务器的区别,官方是这样解释的 服务号**:主要偏向于服务交互(功能类似12315,114,银行,提供绑定信息,服务交互),每月可群发4条消息;服务号**适用人群:媒体、企业、政府或其他组织。 订阅号**:主要偏向于为用户传达资讯,(功能类似报纸杂志,为用户提供新闻信息或娱乐趣事),每天可群发1条消息;订阅号**适用人群:个

YingYing 4万+

开放平台实现安全的身份认证与授权原理与实战:使用OpenID Connect与OAuth 2.0实现用户属性传

作者:禅与计算机程序设计艺术 1.背景介绍 什么是开放平台? “开放平台”(Open Platform)是一个由开放数据标准、API接口和应用组件等组成的开放通信服务平台,它通过网络进行信息交流、通讯和协作。其核心功能是提供各种服务和产品,让第三方开发者

AI天才研究院 360

Eureka常见面试题总结

点击关注我的博客原文 Eureka是Netflix组件的一个子模块,也是核心模块之一。云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移(来源springcloud中文网的介绍:https://www.springcloud.cc/)。下图总结了Eureka服务端(以下简称服务端)与Eureka客户端(以下简称客户端)之间协同工作的流程: 流程说明:...

u012105931的博客 2万+

微信公众号开发模式之用户账号绑定

公司需要微信这个平台和用户交流,于是开始研究微信公众平台。微信公众平台分为两种模式,其一是编辑模式,比如用户发什么内容,你可以响应什么内容。另外一种便是开发模式,这个模式功能丰富,不仅仅可以获取到用户的基本信息,还能获取用户的地理位置以及其他功能。 本来准备自己来开发一套微信公众号后台,后来发现已经有相关的开源产品,使用过三四种,发现最好用的还是”微擎“,咱们运维生存时间也不是替他打广告,确实比

u013692030的专栏 862

HWDB1.1数据集处理全攻略:从gnt文件到PNG图片的完整转换教程

本文提供了HWDB1.1数据集处理的完整教程,详细解析了gnt二进制文件格式,并给出了从文件解析、标签映射到批量转换为PNG图片的Python脚本。教程涵盖了环境准备、跨平台解压方案,以及为PyTorch等深度学习框架准备数据的最佳实践,是进行手写汉字识别研究不可或缺的实用指南。

2w3e4r5t6y的博客 627

手把手教你SpringBoot企业微信开发(三):实战网页授权与用户信息获取

本文详细介绍了如何使用SpringBoot实现企业微信网页授权与用户信息获取功能。通过实战案例,讲解了从环境配置到授权流程的完整实现,包括构建授权URL、处理回调获取用户信息等关键步骤,并提供了Thymeleaf集成和Redis缓存优化方案,助力开发者快速掌握企业微信开发技巧。

weixin_30463341的博客 339

详解一典型的反激式开关电源方案

如图,在某系统方案上看到下图所示的单端反激式开关电源方案。

alala120的博客 1万+

使用【阿里云百炼】搭建自己的大模型

本文介绍阿里云百炼大模型平台,其为企业级服务平台,融合通义千问等模型,支持多模态能力,提供一站式工具降低开发门槛。重点讲解智能体应用及大模型搭建步骤,含进入创新应用界面、选模型配参数、输指令、导数据、加载知识库、获取API Key、加样例库、配置MCP,还提及模型调试与多平台发布,并附试用链接,助力企业与开发者快速搭建适配业务的AI模型。

Larry的博客 4738

微信公众号用户信息认证机制

又有一段时间没动笔了,确实工作后忙碌起来了,年末了,给大家拜年了,抽了这个空档把最近做的一个东西分享分享。 微信公众号,相信不少人已经有接触,其开发分为许多种,本次主要说的是,通过微信认证后的公众号(下图,),使用Oauth网页接口来获取用户信息的流程。 一、基础准备 首先,明确需求:有一个应用服务器,希望通过某个链接(菜单)进入此应用,在应用服务器端可以获得访...

weixin_34099526的博客 178

告别ArcGIS小红叉:从‘无法验证登录信息’到成功连接在线资源的完整排错记录

本文详细记录了从Windows便签的网络错误到ArcGIS连接问题的完整排错过程。通过分析代理服务器、DNS配置和系统网络设置,解决了ArcGIS无法验证登录信息的问题,提供了实用的网络优化方案和技术排错思路。

weixin_26800111的博客 389

微信公众号授权登录

微信公众平台的授权登录功能,可以让第三方网站或应用获取用户的基本信息,以实现用户身份认证和登录。以下是微信公众平台授权登录的详细步骤及代码示例。

weixin_42487883的博客 1193

RPA实战-UiPath自动化处理Outlook邮件附件全流程解析

本文详细解析了如何使用UiPath实现Outlook邮件附件的自动化处理全流程,涵盖环境配置、核心流程实现、高级功能扩展及性能优化技巧。通过RPA技术,企业可大幅提升邮件附件处理效率,减少人工操作错误,适用于财务、物流等多个场景。

weixin_33701251的博客 427

无人机导航中的坐标系统详解与转换实现

本文系统介绍了无人机导航中常用的坐标系及其转换方法。主要内容包括:1) 四种关键坐标系(大地坐标系ECEF、经纬度LLA、北东天坐标系NED、机体坐标系)的定义和特点;2) 坐标系间的转换原理与实现,重点讲解LLA与ECEF的互转公式及ECEF与NED的转换方法;3) 提供可直接使用的C++实现代码,包括基于WGS84椭球模型的精确转换算法。这些内容为无人机导航系统开发提供了实用的坐标系处理方案,能够有效解决多源数据在不同坐标系下的统一表示问题。

电脑管家 375

HTML5和JAVA在微信,html5 java 实现 微信获取认证身份信息

一,微信获取认证信息分两种类型本文采用第一种. 二 前端代码首先获取code,然后重定向到当前页. if(!GetQueryString("code")){ window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxx&redirect_uri=http://xxxxxx/xx...

weixin_39947501的博客 435

合肥工业大学操作系统实验8

依据操作系统课程所介绍的地址映射与内存共享的原理,本实验的目的是深入理解物理内存的分页管理方式。 深入理解操作系统的段、页式内存管理。包括理解段表、二级页表,以及逻辑地址、线性地址、 物理地址的映射过程。编程实现段、页式内存管理上的内存共享,从而深入理解操作系统的内存管理。从而加深对教材上地址映射与内存共享的理解。

Martin-share的博客 1721

微信公众号扫码登录实现原理与实战:基于CodeGuide从零搭建公众号扫码登录服务端

> 社区、论坛、AI 服务网站上常见的"使用微信公众号扫码登录",本质上是通过公众号**带参数二维码**完成的一次免注册登录:前端轮询服务端检测扫码状态,服务端接收公众号回调后把用户唯一标识(openid)与扫码凭证(ticket)绑定,进而放行登录。本文以 CodeGuide 仓库中小傅哥的《小场景训练营:公众号扫码登录》文档为骨架,完整讲解扫码登录的流程设计、微信公众号平台对接、DDD 工程下

gitblog_00551的博客 91

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Workbuddy合法接入微信:公众号接口+扫码登录实战指南

微信个人账号自动化操作已被平台严格禁止,开发者需转向官方支持的合规路径。微信公众号(服务号)API提供稳定、安全、文档完备的消息收发能力,基于RESTful标准与OAuth2.0鉴权机制,具备高可用性与长期兼容性;微信扫码登录则作为轻量级身份认证桥梁,无需企业资质即可实现用户身份绑定。二者共同构成面向运营自动化与统一登录场景的工程化解决方案,适用于客户咨询Bot、内部系统单点登录等真实业务需求,兼顾安全性、可维护性与扩展性。

weixin_34128839的博客 217

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

微信网页授权多域名代理方案:统一入口解决单域名限制

OAuth 2.0 是一种广泛应用的开放授权协议,它允许用户授权第三方应用访问其存储在服务提供者(如微信)的资源,而无需共享用户名和密码。其核心原理是通过授权码(code)交换访问令牌(access_token),实现安全、可控的资源访问。在微信生态开发中,网页授权是获取用户身份信息的关键技术,对构建用户体系、个性化服务至关重要。然而,微信官方限制一个服务号只能配置一个网页授权域名,这在前端微服务化、多产品线并行等复杂业务场景下,严重制约了架构灵活性。为解决这一多域名困境,本文深入探讨了基于代理模式的统一授

weixin_30755393的博客 451

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 微信内置浏览器Ajax请求10s超时重发问题的解决方案
下一篇: Android6.0动态权限shouldShowRequestPermissionRationale的含义
wangpf2011
博客等级 码龄16年 71粉丝 75原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值