• 关于移动端H5获取微信非静默授权被拦截进入【微信快照页】问题及解决方案


    业务需求场景:登录用户 — 微信分享H5页面URL — 好友(非登录用户)打开分享页面时,要求获取用户授权,拿到非登录用户的微信相关信息才可以继续访问


    问题描述:有部分用户反馈,页面访问不正常即,打开分享页面,进入了微信快照页,并且右下角有提示,需要用户点击【使用完整服务】后,才能正常拉取授权进入分享页


    官方描述:快照页将会默认对用户屏蔽网页授权弹窗,用户在快照页中仅可进行滑动浏览操作,其他交互将被限制,并提示用户 “该网页需获取个人信息才可使用完整服务,当前仅可浏览部分内容”。用户如需要使用完整网页服务,可轻触右下角 “使用完整服务” 按钮触发授权弹窗,用户确认后进入原网页。

    微信网页授权能力调整公告https://developers.weixin.qq.com/community/minihome/doc/000c2c34068880629ced91a2f56001


    授权流程:(vue项目为例)


    解决方案:

    首先要明白为什么会进入快照页,客观看这里:

    现有的业务代码逻辑正好命中不规范中第一条: 访问网页时就去拉取授权

    猜想,如果在拉取授权前跳转一个过渡页,过渡页明确告知用户要去拉取微信授权获取个人信息,且由用户点击确定按钮操作后,再执行网页授权逻辑,这样就符合微信授权规范了吧?修改授权逻辑,增加过渡页:

    测试,ok,完美解决分享页面拉取授权进入快照页问题 ~ 


    授权过渡页逻辑代码:(供参考)

    1. <script>
    2. export default {
    3. name: 'wx-auth-page',
    4. components: {
    5. confirmDialog
    6. },
    7. data () {
    8. return {
    9. showDialog: false
    10. }
    11. },
    12. created () {
    13. this.onCheckWxRedirect()
    14. },
    15. methods: {
    16. async onCheckWxRedirect () {
    17. const {
    18. code,
    19. state
    20. } = this.$route.query
    21. // 判断是否授权重定向
    22. if (code && state === 'shareLogin') {
    23. // 重定向回来,业务逻辑
    24. // 请求接口续签token,跳转分享页
    25. } else {
    26. // 非重定向,唤起授权提示
    27. this.showDialog = true
    28. }
    29. },
    30. // 发起微信授权
    31. async onSetWxAuthHandle () {
    32. const {
    33. origin,
    34. pathname
    35. } = this.onReturnWindowOpt()
    36. this.showDialog = false
    37. // 接口逻辑略
    38. await setWxOpenAuth({
    39. state: 'shareLogin',
    40. redirectUrl: encodeURIComponent(origin + pathname)
    41. })
    42. },
    43. // 失败跳转登录,错误补偿机制
    44. wxAuthErrorEffect () {
    45. this.$toast('授权失败')
    46. const { origin } = this.onReturnWindowOpt()
    47. window.location.replace(`${origin}${PRODUCT_NAME}login`)
    48. },
    49. onReturnWindowOpt () {
    50. const {
    51. origin,
    52. pathname
    53. } = window.location
    54. return {
    55. origin,
    56. pathname
    57. }
    58. }
    59. }
    60. }
    61. script>

  • 相关阅读:
    对elementui中分页组件进行二次封装
    Java基础——Java语言与面向对象
    Python 脚本中的 FFmpeg
    随机森林可视化
    redis应用——实现访问量案例(redis+定时任务+分布式锁)
    【2023年11月第四版教材】第18章《项目绩效域》(合集篇)
    数据库上机实验7 数据库设计
    Access注入---偏移注入 | Mysql注入---DNS注入 | MSSQL---反弹注入
    神经网络参数研究方法,神经网络参数研究方向
    leetcode 151. 反转字符串中的单词
  • 原文地址:https://blog.csdn.net/Jone_hui/article/details/127111132