收藏
回答

微信小程序是否无法跳转到H5接口授权获取code,以及通过code换取AccessToken?

现在遇到一个问题,公司的广告连接跳转,通过小程序内部的页面url跳转到一个HTML5页面,这个页面的后台鉴权的方式是通过网页版本H5接口获取code ,然后通过code再获取AccessToken的机制来获取微信用户openid信息,来实现用户微信授权;H5的接口授权文档在这里:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 但是这个文档里面没有明确说明不能用于小程序端内页跳转;跳转之后其实还是停留在小程序里面的。目前最新版本的华为 鸿蒙系统是可以支持的,可能是由于鸿蒙系统小程序的页面机制是webview的。然而,IOS苹果手机的小程序, 老版本的鸿蒙4.2 和普通的安卓手机都是不行的,也没有看到官方文档明确说明不能用于小程序。请问这个问题的真相是什么,请官方给一个明确答复。

回答关注问题邀请回答
收藏

4 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    05-12

    微信小程序内嵌H5页面无法通过传统网页授权获取code的机制,这是由平台安全策略决定的。核心问题如下:

    一、授权机制隔离

    1. 环境隔离性小程序Webview运行在独立沙箱环境中:
    • 无法直接调用微信公众号的JS SDK接口
    • 不支持传统H5网页的OAuth授权流程(包括获取code、access_token等)
    1. 凭证体系差异
    • 小程序使用wx.login获取的code仅适用于小程序体系(通过code2Session接口换取openid)
    • 微信公众号网页授权code属于另一套凭证体系,两者无法互通

    二、官方解决方案

    必须使用小程序原生授权机制:

    wx.login({
      success: res => {
        const code = res.code // 有效期为5分钟
        // 将code发送至开发者服务器换取openid
      }
    })
    

    参考文档:小程序登录流程Webview使用限制

    05-12
    有用
    回复
  • sun
    sun
    发表于小程序端
    05-09

    你能想办法搞定添加业务域名就行,需要你们老板有实力往腾讯的服务器上放校验文件。

    05-09
    有用
    回复 1
  • 风清雾散云开见日出
    风清雾散云开见日出
    05-09

    你可以把网页授权的api的域名:https://open.weixin.qq.com,添加到你的小程序后台业务域名中就行。不行,就不要搞这种。

    05-09
    有用
    回复 9
    • 山猫
      山猫
      05-09
      不行的,这个要验证网站域名的所有权,要上传网站根目录的验证文件到域名服务器站点,显然open.weixin.qq.com是腾讯的资产,不归我们第三方企业所有。这个业务域名添加是行不通的
      05-09
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      05-09回复山猫
      所以webview不支持使用公众号的网页授权h5页面啊
      05-09
      回复
    • 山猫
      山猫
      05-09回复风清雾散云开见日出
      我们这里没有使用webview,我们这个url是在小程序内部的页面banner图片上配置的一个跳转url,这个url是公司H5站点的H5页面,初次从小程序内部访问的时候,这个H5站点会验证用户是否授权,如果没有授权就会重定向到微信的网页H5授权验证接口这里,第一步是拿code,第二步通过code拿accesstoken;我们发现微信小程序这里直接跳转到第一步授权这里初始化的时候就白屏了。而安卓手机是可以弹出来授权允许对话框,点击确定之后,准备往第二步跳转,就报错了。
      05-09
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      05-09回复山猫
      首先网页授权功能是公众号的功能。在小程序中就无法使用。
      05-09
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      05-09回复山猫
      其次。小程序里面使用H5页面必须是webview。否则无法访问。
      05-09
      回复
    查看更多(4)
  • 智能回答 智能回答 本次回答由AI生成
    05-09
    有用
登录 后发表内容