微信网页授权 能力是为了优化用户在微信内登录网站应用的体验而设计的。为进一步规范能力使用,保障用户合法权益,平台将对能力进行调整。
当开发者在网页中在不规范使用发起 snsapi_userinfo 网页授权时,微信将默认打开网页快照页模式进行基础浏览。能力调整将于 2022 年 7 月 12 日 24 时生效。
网页快照页模式介绍
快照页将会默认对用户屏蔽网页授权弹窗,用户在快照页中仅可进行滑动浏览操作,其他交互将被限制,并提示用户 “该网页需获取个人信息才可使用完整服务,当前仅可浏览部分内容”。用户如需要使用完整网页服务,可轻触右下角 “使用完整服务” 按钮触发授权弹窗,用户确认后进入原网页。
- 开发者在快照页内所获取的头像、昵称、openId、unionId 均为虚拟账号数据;
- 快照页与正常页面不共用缓存,快照页的缓存会在用户离开快照页时被清理;
- 快照页内也无法使用微信其它 JS-SDK 的能力。
微信网页授权规范
- 授权流程需引导清晰、准确:在申请获取用户信息的弹窗出现前,应该清晰、准确地告知用户获取信息的范围及获取信息的目的;
- 必要场景申请:在必须获取用户信息时才申请,而不是用户尚未了解服务前就强制弹窗。如使用医院挂号时才需要获取用户信息;
- 不强制登录:提供游客模式,供用户了解网页提供的基础服务,不强制用户允许网页获取用户信息后才能使用网页服务。
常见的微信网页授权不规范使用案例
- 强制登录:在用户打开网页时立即要求用户授权,用户拒绝后无法使用网页提供的服务;
- 违规收集个人信息:未在网页提前告知使用个人信息的目的、方式和范围;
- 非必要收集:非必要获取用户信息的网页,如文章、视频等,要求用户在浏览内容前登录;
- 差别对待微信用户:同样的网页在浏览器内可以无需登录直接访问,在微信内却要求用户先登录才可访问。
微信团队
2022年5月9日
拿不到 快照参数, 在支付时提示 当前的 《下单账单于支付账号不一致,请核查后再支付》,openid 是一致也提示这个问题, 但我开发账号是可以的,求解,哪个大佬 提点下。
请教下,加急,我是在node端调用 https://api.weixin.qq.com/sns/oauth2/access_token 时,无论如何都获取不到 is_snapshotuser 值。
请问如何解决?
兄弟们 2024年了 静默授权还是没有unionid mlgbz......
unionId为啥不能放到base授权返回?这不扯吗。。。微信仗着家大业大,明着欺负各位小开发者,就是让你难受
请问大佬们,我发起授权,snsapi_userinfo 为什么是静默授权啊,设置forcePopup=true&forceSnapShot=true 也没有打开网页快照页模式
怎么回事啊
我的用户需要从公众号进入H5并支付,每次看到个,会导致用户流失。人家看到要授权,个人信息等,以为是盗窃什么,都不乐意去点击。改改吧,真感觉腾讯产品做得真不咋滴,就凭早期累计大量用户否则早就不行了。
在快照模式里面循环。。。。。。。。。。。
微信公众号 网页授权弹窗点击允许, 多久后会再次弹出需要授权窗口?
昨天测试时,发现请求微信用户信息的openid和返回的openid不是同一个,大家有没有遇到过这样的情况?晕啊!!!!!!
按https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html步骤在系统中已实现了可以获取用户微信端信息(昵称,头像)的功能,但运行过程中出现了如下严重问题:
测试步骤如下:
步骤1:A用户使用A用户的openid正确地从微信端获取了用户信息(昵称,头像)
步骤2:此时,在Access_token生效的前提下,
B用户使用B用户的openid去调用接口时,返回的却是A用户的openid及A用户的昵称和头像。
拉取用户信息的接口为:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
这是步骤二B用户测试执行结果:
10-11 16:42:28.036 ERROR [RetrieveWechatUserInfoUtil.getUserInfoFromWxPlatform(157)] ---------------------------- 访问微信接口,获取头像昵称的日志打印 -------------------------------------
10-11 16:42:28.037 ERROR [RetrieveWechatUserInfoUtil.getUserInfoFromWxPlatform(158)] ---------------------------- 执行时间 -------------------------------------1697013748037
10-11 16:42:28.037 ERROR [RetrieveWechatUserInfoUtil.getUserInfoFromWxPlatform(159)] ---------------------------- 微信平台的appid(appId) -------------------------------------wx0f31bf193e45fe80
10-11 16:42:28.037 ERROR [RetrieveWechatUserInfoUtil.getUserInfoFromWxPlatform(160)] ---------------------------- 要获取用户信息的openId(openId) -------------------------------------ocxCEs1WKL2fs3SIH2mw9zk0tuik
10-11 16:42:28.038 ERROR [RetrieveWechatUserInfoUtil.getUserInfoFromWxPlatform(161)] ---------------------------- accessToken(accessToken) -------------------------------------73__BqHtXZdeQWdoqsMYNnSvfcQ0tJHDgyURdwynWkju7HHYW9I7cYBD1et--ZR7OihSuDJBA1IILxXtBbo-G_k9nr6Hy0wWCsSvuWG2Md6t5k
10-11 16:42:28.038 ERROR [RetrieveWechatUserInfoUtil.getUserInfoFromWxPlatform(162)] ---------------------------- refreshToken(refreshToken) -------------------------------------73_bDLTJeKvo6cp7hbTnqPWTXx5M7FjcNz3upCnhwZ17ifvo721bBxqvUQKcC1E1Pt0TYgzaReCsY6pcOpB4ohO1zvZ7YCZ8V6f4ZDbr_B1NaY
10-11 16:42:28.039 ERROR [RetrieveWechatUserInfoUtil.getUserInfoFromWxPlatform(170)] ---------------------------- 腾讯接口返回的openid(openId) -------------------------------------ocxCEsyKmPwScf7bVQEnNElq9o2c -- 可以看出,返回的openid,并非上面请求的openid。
请求者的openid和返回的openid不是同一个,接口居然也不返回errorCode,我晕啊。