微信网页授权 能力是为了优化用户在微信内登录网站应用的体验而设计的。为进一步规范能力使用,保障用户合法权益,平台将对能力进行调整。
当开发者在网页中在不规范使用发起 snsapi_userinfo 网页授权时,微信将默认打开网页快照页模式进行基础浏览。能力调整将于 2022 年 7 月 12 日 24 时生效。
网页快照页模式介绍
快照页将会默认对用户屏蔽网页授权弹窗,用户在快照页中仅可进行滑动浏览操作,其他交互将被限制,并提示用户 “该网页需获取个人信息才可使用完整服务,当前仅可浏览部分内容”。用户如需要使用完整网页服务,可轻触右下角 “使用完整服务” 按钮触发授权弹窗,用户确认后进入原网页。
- 开发者在快照页内所获取的头像、昵称、openId、unionId 均为虚拟账号数据;
- 快照页与正常页面不共用缓存,快照页的缓存会在用户离开快照页时被清理;
- 快照页内也无法使用微信其它 JS-SDK 的能力。
微信网页授权规范
- 授权流程需引导清晰、准确:在申请获取用户信息的弹窗出现前,应该清晰、准确地告知用户获取信息的范围及获取信息的目的;
- 必要场景申请:在必须获取用户信息时才申请,而不是用户尚未了解服务前就强制弹窗。如使用医院挂号时才需要获取用户信息;
- 不强制登录:提供游客模式,供用户了解网页提供的基础服务,不强制用户允许网页获取用户信息后才能使用网页服务。
常见的微信网页授权不规范使用案例
- 强制登录:在用户打开网页时立即要求用户授权,用户拒绝后无法使用网页提供的服务;
- 违规收集个人信息:未在网页提前告知使用个人信息的目的、方式和范围;
- 非必要收集:非必要获取用户信息的网页,如文章、视频等,要求用户在浏览内容前登录;
- 差别对待微信用户:同样的网页在浏览器内可以无需登录直接访问,在微信内却要求用户先登录才可访问。
微信团队
2022年5月9日
昨天测试时,发现请求微信用户信息的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,我晕啊。
现在没有人提问了么,现在是个什么情况,这个快照是什么情况触发的。
开办公众号主体单位名称变更了,怎么注销微信公众号?
是不是快照模式和用户点了使用完整服务授权登录后的openid不一样?
好久没有做微信授权这一块了 今年遇到了
snsapi_userinfo 在未关注appid请求授权的公众号的的情况下,只要用户授权,也能获取其信息
这种是属于不规范授权 所以 底部会出现“该网页需获取个人信息才可使用完整服务,当前仅可浏览部分内容”
有没有大佬给个示例啊 怎么才能避免进入快照
你好,我们发现虚拟unionid有概率和同一主体真实用户的unionid出现相同的情况,麻烦尽快核实并给出相应处理方案。谢谢
现在可经了吗
IOS 网页视频被强制全屏,不能触发timeupdate事件