微信小程序获取openid

article/2025/10/23 3:52:35

获取openId (用户唯一标识)和session_key

第一步,获取code
调用wx.login(OBJECT) 获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。

注:调用 login 会引起登录态的刷新,之前的 sessionKey 可能会失效

示例代码:

//app.js
App({onLaunch: function() {wx.login({success: function(res) {if (res.code) {//发起网络请求wx.request({url: 'https://test.com/onLogin',data: {code: res.code}})} else {console.log('获取用户登录态失败!' + res.errMsg)}}});}
})

第二步,根据code获取openid和session_key
这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid。session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。
这里写图片描述

接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
1
返回值说明:

//根据code获取openid等信息
wx.login({//获取codesuccess: function (res) {var code = res.code; //返回codeconsole.log(code);var appId = '...';var secret = '...';wx.request({url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code',data: {},header: {'content-type': 'json'},success: function (res) {var openid = res.data.openid //返回openidconsole.log('openid为' + openid);}})}})//正常返回的JSON数据包
{"openid": "OPENID","session_key": "SESSIONKEY","unionid": "UNIONID"
}
//错误时返回JSON数据包(示例为Code无效)
{"errcode": 40029,"errmsg": "invalid code"
}

注意: 此时如果你未勾选项目中的“开发环境不效验请求域名、TLS版本以及HTTPS证书”则会报错

到设置->项目设置->勾选:开发环境不校验请求域名、TLS版本以及HTTPS证书

②接着你会发现报错:不在一下合法域名列表,请参考文档:
https://map.weixin.qq.com/debug/wxadoc/dev/api/network-request.html
意思是说:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
不是一个合法域名,在测试的时候是没有问题的,但是要上线的时候就出现了问题,想着让管理员把链接加到服务器域名里面,但是操作不允许。。。

小程序服务器域名配置常见错误:
http://kf.qq.com/faq/1706236NjINj1706236VRZBR.html

③解释:如果在配置服务器域名中填写了“api.weixin.qq.com”会出现上述错误提示。出于安全考虑,为避免开发者将AppSecret放置在小程序的前端代码内,平台禁止设置此域名。 小程序的开发者密码(AppSecret)是一个非常重要的字段,使用该密码可以调用小程序的所有后台接口。请不要将该字段放置在微信小程序的前端代码中,因为微信手机客户端容易被反编译并轻松获得Appsecret,造成重大的安全威胁。开发者应将Appsecret保存到后台服务器中,通过服务器使用Appsecert获取Accesstoken。微信公众平台小程序后台的服务器地址设置也将禁止将“api.weixin.qq.com”域名的配置,所有对于“api.weixin.qq.com”域名下的接口请求请全部通过后台服务器发起,请勿直接通过小程序的前端代码发起。

④解决:所以解决办法就是把code传给后台,让后台去请求微信的官方接口获得openId和session-key。

官网提供的获取openid等信息,也如下图所示:

这里写图片描述

3.第三步,检测用户登录状态是否有效

通过wx.checkSession(OBJECT)获得的用户登录态拥有一定的时效性。用户越久未使用小程序,用户登录态越有可能失效。反之如果用户一直在使用小程序,则用户登录态一直保持有效。具体时效逻辑由微信维护,对开发者透明。开发者只需要调用wx.checkSession接口检测当前用户登录态是否有效。登录态过期后开发者可以再调用wx.login获取新的用户登录态。

这里写图片描述

示例代码:

wx.checkSession({success: function(){//session 未过期,并且在本生命周期一直有效},fail: function(){//登录态过期wx.login() //重新登录....}
})

最后登录时序图:
这里写图片描述

原文地址:https://blog.csdn.net/llayjun/article/details/78291641


http://chatgpt.dhexx.cn/article/gfSgBklL.shtml

相关文章

微信公众号开发:如何获取openId(最简单的方式)

最近的项目涉及到微信公众号的开发,必然要涉及到微信公众号的openId的获取,以及appId的获取,appId的获取很简单,但是如何才能获取到openId呢? 我找到了一种最简单的获取方法,整理如下: 注册自己…

如何获取用户的微信openid

如何获取用户的微信openid 如何获取用户的微信openid (1)首先登陆微信公众号后台(确保你有登陆微信后台的权限才可以哦)(2)登陆后点击左侧“用户管理”,然后找到你要查的用户,右击头…

OAuth 2.0 和 OpenID Connect 的基本原理和区别(干货)

基本原理 首先要明确OAuth OpenID Connect学习起来比较难,对谁都会比较难,所以心态要放好,因为有很多专业属于、缩写等等,你要是之前不知道,就基本上很难看懂。而且OAuth和OpenID Connect不像HTTP这样的协议&#xff…

uni-app 获取用户的openID和基本信息

目录 一、获取用户的openId1、前提条件:找到小程序的id和密钥2、代码展示3、结果 二、获取用户的基本信息1、API说明2、代码展示2、结果 一、获取用户的openId 1、前提条件:找到小程序的id和密钥 在微信公众平台,https://mp.weixin.qq.com/…

OIDC(OpenId Connect)身份认证

1 什么是OIDC? 看一下官方的介绍(http://openid.net/connect/): OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows Clients to verify the identity of the End-User based on the a…

openID及unionID的区别

前言:开发小程序和微信公众号之前,一定要充分理解openID及unionID的区别,唯一标识很重要,免得后期填坑 一、公众号openID和小程序openID说明: 为了识别用户,每个用户针对每个公众号或小程序等应用会产生一…

微信小程序获取用户openid(详解)

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识快速建立小程序内的用户体系 然而因为小程序中的openid不可以直接使用需要用code(登录凭证)去换取openid 获取openid的思路 获取openid首先需要调用小程序的login方法获取小程序的登录凭证code,然后使…

如何获取微信用户openid

📒博客首页:崇尚学技术的科班人 小肖来了🏇 🍣今天给大家带来的文章是《如何获取微信用户openid》🍣 🍣希望各位小伙伴们能够耐心的读完这篇文章🍣 🙏博主也在学习阶段,如…

openID相关知识

1.openID是什么 openID是微信平台推出的,每个用户在每个公众号的用户标志。(https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html) openID目前是由28位加密过后的字符串组成。 再次说明是&…

微信openid你了解多少?appid,appsecert又是啥?

openid这个东西有点泛。百度搜到的都说这个东西可作为微信用户唯一的ID,然而很多都被认为每个微信号只能有且只有一个openid. 下面澄清一下这个openid 微信号:这个大家都可以理解,每个人都有一个微信号,不会重复。修改一次后也…

OpenID简介

一、OpenID简介 OpenId是一个以用户为中心的数字身份识别框架,它具有开放、分散、自由等特性。OpenId的创建是基于这样一个 概念:我们可以通过URI(或者URL网址)来识别一个网站。同样,我们也可以通过这样的方式来识别一…

什么是OpenID?OpenID概念、原理和案例

这几周有关OpenID的新闻不断:Google Profile变身OpenID、WordPress上的Google Friend Connect插件实现OpenID留言、OpenID先驱JanRain获得325万美元风险投资、雅虎将全面支持Facebook Connect服务…… 正好前段时间看了一些OpenID的资料,希望下面的内容可…

window.onblur 和 window.onfocus

2019独角兽企业重金招聘Python工程师标准>>> 在你浏览其他窗口页面、或是浏览器最小化、又或是点击了其他程序等等,都算是浏览器窗口失去焦点,那么 window.onblur 事件就会触发。 当你浏览别的窗口或者别的程序,直接点就是当你的窗口失去焦点…

html中onblur属性,html中的onfocus和onblur是什么属性?怎么使用?

html中的onfocus和onblur是什么属性?怎么使用?本篇文章就给大家介绍onfocus属性和onblur属性是什么,让大家了解onfocus属性和onblur属性的简单用法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 …

事件绑定(onclick,onfocus,onblur)

事件绑定(onclick,onfocus,onblur) 学习路线:JavaScript基础语法(输出语句)->JavaScript基础语法(变量)->JavaScript基础语法(数据类型)->JavaScript基础语法(运算符&…

js——input获取焦点-onfocus和失去焦点-onblur 自动获取焦点-autofocus=autofocus onchange 事件会在域的内容改变时发生

js——input获取焦点-onfocus和失去焦点-onblur & 自动获取焦点-autofocus“autofocus” & onchange 事件会在域的内容改变时发生 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"…

js中的focus()

eg&#xff1a; function submitForm(){ var title $("#title").val(); var content ue.getContent(); if(title.length>100){ $.messager.alert("提示","<br>公告标题超过字数限制!","info"); $("#titl…

HTML onfocus (获得焦点)和 onblur (失去焦点)

HTML onfocus 事件属性 定义和用法 onfocus 属性在元素获得焦点时触发。 onfocus 常用于 <input>、<select> 以及 <a>. 提示&#xff1a;onfocus 属性与 onblur 属性相反。 注释&#xff1a;onfocus 属性不适用于以下元素&#xff1a;<base>、<bdo&…

multisim14

multisim14 安装之后&#xff0c;打开却无法使用&#xff0c;提示 不知道为什么会出现这种情况&#xff0c;望大神告知

multisim14安装后怎么汉化(超详解)

当有些学生开始装multisim时&#xff0c;有的安装不是汉化&#xff0c;想着是不是软件语言设置上原因&#xff0c;其实是缺少汉化包&#xff0c;当使用multisim时&#xff0c;对仪器图标倍感陌生&#xff0c;还有那些英语不好令人作呕的英文栏&#xff0c;这时想把该软件汉化&a…