微信H5页面获取userInfo需满足三前提:运行在微信可信上下文、正确配置JS-SDK、使用chooseAvatar组件而非已禁用的wx.getUserProfile。

微信 H5 页面拿不到 userInfo?先确认是不是在合法上下文里
微信 H5 页面本身无法直接调用 wx.getUserProfile 或 wx.login,除非它运行在微信内置浏览器的「可信环境」中——也就是用户从微信聊天窗口、公众号菜单、服务号消息点开的页面。如果链接是从短信、外部浏览器、桌面微信(非手机)或扫码跳转但未带 from=group/from=singlemessage 等上下文参数,JS-SDK 会初始化失败,所有用户相关接口都返回 invalid signature 或直接静默拒绝。
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 用
location.href打印当前 URL,检查是否含from=、isappinstalled=等微信注入参数 - 在页面加载后立即执行
if (typeof WeixinJSBridge !== 'undefined')或if (window.__wxjs_is_wkwebview)做基础环境判断 - 不要依赖
navigator.userAgent里的MicroMessenger字样就认为能调 SDK——它只说明是微信浏览器,不保证有 JS-SDK 权限
必须走微信 JS-SDK,但 config 配置老失败
获取用户信息的前提是正确注入并配置 jsapi_ticket 和 nonceStr,而这两者必须由后端通过微信开放平台接口动态生成,前端不能硬编码或缓存超过 2 小时。常见错误是把 appId 写成公众号原始 ID(gh_xxx),或者签名用的 url 没做 encodeURIComponent 处理,导致签名不一致。
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 后端签名时,
jsapi_ticket必须从微信接口实时拉取,且缓存时间严格控制在 7200 秒内 - 前端传给后端签名的
url必须是当前页面完整 URL(含 hash 前的部分),不能是window.location.origin + window.location.pathname这种丢参写法 - 调用
wx.config后务必监听wx.error回调,打印res.errMsg,90% 的问题都能从config:invalid signature或config:invalid url domain定位出来
wx.getUserProfile 被拒?别再用它了
自 2023 年起,wx.getUserProfile 在大部分场景下已被微信禁用,调用会直接触发 fail: no permission。目前唯一稳定可用的用户信息获取方式,是结合 wx.login 换取 code,再由后端调用微信 auth.code2Session 接口,拿到 openid 和(可选的)unionid。注意:这个过程不返回昵称、头像等敏感字段,它们必须由用户主动授权,且只能通过「头像昵称一键获取」组件(button open-type="chooseAvatar" 或 open-type="getUserInfo",后者已废弃)完成。
由于疫情等原因大家都开始习惯了通过互联网上租车服务的信息多方面,且获取方式简便,不管是婚庆用车、旅游租车、还是短租等租车业务。越来越多租车企业都开始主动把租车业务推向给潜在需求客户,所以如何设计一个租车网站,以便在同行中脱颖而出就重要了,易优cms针对租车行业市场需求、目标客户、盈利模式等,进行策划、设计、制作,建设一个符合用户与搜索引擎需求的租车网站源码。 网站首页
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 前端只需调
wx.login({ success: cb })拿到code,立刻 POST 给后端,别自己尝试解密或缓存 - 后端换 session_key 时,必须校验
appid和appsecret,且响应中unionid仅在用户关注公众号/绑定开放平台账号时才存在 - 如需头像昵称,必须用
,且该 button 渲染时需确保 DOM 已挂载、微信 JS-SDK 已 ready
真要显示头像和昵称,chooseAvatar 组件怎么写才不白屏
很多 H5 页面引入 chooseAvatar 后点击无反应,甚至整个页面白屏,根本原因是组件依赖微信 WebView 的原生能力,而它只在 iOS WKWebView 和 Android X5 内核(新版腾讯 X5)中可用。旧版系统、部分定制 ROM、或未开启「网页开发者工具」调试模式的微信,可能直接忽略该标签。
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 按钮必须用原生
标签,不能套在或其他自定义组件里;open-type值必须小写、全英文,且不可加空格 - 绑定事件用
bind:chooseavatar(不是bindchooseavatar或@chooseavatar),回调函数里通过e.detail.avatarUrl和e.detail.nickName取值 - 务必在
wx.ready回调之后再渲染该 button,否则微信可能无法识别其上下文
真正麻烦的地方不在代码,而在于:用户授权是一次性的,且微信不会提供「重新授权」入口。一旦拒绝,下次得手动去微信设置里清除授权记录——这个路径藏得深,绝大多数用户找不到。所以首次引导文案、按钮位置、触发时机,比代码本身更关键。










