收藏
回答

小程序通过web-view内嵌H5,需调原生api一直提示invalid url domain?



小程序首页是用原生uniapp开发的,点击后进入到web-view嵌入页面,H5页面想调用微信原生api一直提示上面报错,appid填写的是小程序的,(没有公众号,只有一个小程序,H5网页和接口在一个服务器域名下),问题是啥呢?该如何解决啊

async initWxConfig() {
      console.log('getJsapiSignature', this.$route);
      // 根据url调用接口获取微信鉴权相关数据,注意url发生变化就需要创新获取鉴权
      let { data, code } = await http.getJsapiSignature({ url: location.href })
      console.log('鉴权', data, code)
      if (code === '0') {
        // 通过wx.config配置
        wx.config({
          debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          appId: data.appId, // 必填,公众号的唯一标识
          timestamp: data.timestamp, // 必填,生成签名的时间戳
          nonceStr: data.nonceStr, // 必填,生成签名的随机串
          signature: data.signature,// 必填,签名
          jsApiList: [
            // 选择图片
            "chooseImage",
            // 获取位置
            "getLocation",
            // 获取qrcode
            "scanQRCode",
          ] // 必填,需要使用的JS接口列表
        });
        return
        wx.ready(function () {
          // Toast('走到ready了')
          console.log('微信配置成功');
          // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
          wx.scanQRCode({
            onlyFromCamera: true,
            success: function (res) {
              console.log('扫码的结果', res);
              if (res) {
                // 扫码获得结果后获取 personId,然后根据 personId 获取详情信息,同时调用微信 api获取当前位置。
                let data = JSON.parse(res.data)
                this.personId = data.personId
                this.deliveryGiveByQrCodePrepare()
              }
            }
          })
        });
        wx.error(function (res) {
          return
          Toast('error', res)
          // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
          console.log('错误了!!!!', res);
        });
      }
    },
回答关注问题邀请回答
收藏

3 个回答

  • Hlxuan.
    Hlxuan.
    2025-11-03

    JS-SDK是公众号/服务号的能力,你需要去申请一个公众号或服务号,在这个账号后台配置【JS接口安全域名】,代码里面也要改成这个账号的appid。

    2025-11-03
    有用 1
    回复 1
    • 白砂糖
      白砂糖
      2025-11-04
      啊这,主要用公众号的话,同一用户在小程序和H5获取到的openid不一样,后端没法判断是否同一用户了,目前开发是首页用uniapp小程序,其他页面都是用的H5开发,小程序和H5都有登录功能,H5需要调用原生API获取位置和扫码,不知道咋搞了都。啊啊
      2025-11-04
      回复
  • Mr.Zhao
    Mr.Zhao
    发表于小程序端
    2025-11-03

    不能用小程序的

    2025-11-03
    有用
    回复 5
    • 白砂糖
      白砂糖
      2025-11-04
      啊这,主要用公众号的话,同一用户在小程序和H5获取到的openid不一样,后端没法判断是否同一用户了,目前开发是首页用uniapp小程序,其他页面都是用的H5开发,小程序和H5都有登录功能,H5需要调用原生API获取位置和扫码,不知道咋搞了都。啊啊
      2025-11-04
      回复
    • Mr.Zhao
      Mr.Zhao
      2025-11-04回复白砂糖
      跟uniapp无关。把小程序openid传到h5上不就行了。或者绑定微信开放平台通过unionid关联。
      2025-11-04
      回复
    • 白砂糖
      白砂糖
      2025-11-04回复Mr.Zhao
      好的,我试试,谢谢解答,帮了大忙了,原先评估时用H5方案能复用节约大量时间,而且原生小程序和uniapp开发比较慢
      2025-11-04
      回复
    • artist
      artist
      01-08
      你好,解决了吗?
      01-08
      回复
    • artist
      artist
      01-08回复白砂糖
      你好,解决了吗?
      01-08
      回复
  • 智能回答 智能回答 本次回答由AI生成
    2025-11-03
    有用
登录 后发表内容