收藏
回答

微信转发电脑完全实现,但是手机真机测试地址跳转不过去?

我先描述一下情况,我做了微信转发,样式什么的都是好的,不管在真机还是电脑上的开发者工具上测试都是好的,然后转发过去的小方块,电脑上点击,可以定位到具体的页面,但是真机就是过不去,只能在首页。下面上图上代码。

具体实现转发的代码我就不上了,之前我提过一个问题,那里有全部代码。额,怎么发不了图片,那我发文字把,有点不好看,将就点看。

// 挂载路由导航守卫

router.beforeEach((to, from, next) => {

  console.log(from)

  console.log(to)

  if (to.path === '/login') return next()

  const userId = window.sessionStorage.getItem('userId')

  console.log(userId)

  if (!userId) {

    return next('/login')

  }

  next()

})

这个是我挂着路由下,以确保每个进来的用户都先进行验证身份,没有注册的就会转去注册和微信授权,下面的代码就是login这个组件里的微信授权登录和微信转发调用,wxconfig是我单独写的一个js文件,做微信的转发的,这里只调用了一下

async getloginInfo() {

      const AppId = 'dafdsafdafdsafdafdsafdsa' // 公众号的AppId

      const code = this.getUrlParam('code') // 获取请求路径中带code字段参数的方法

      const local = window.location.href // 获取当前的页面路径,这就是回调的地址


      var state = Math.ceil(Math.random() * 10000)

      if (code == null || code === '') {

        window.location.href =

          'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +

          AppId +

          '&redirect_uri=' +

          encodeURIComponent(local) +

          '&response_type=code&scope=snsapi_userinfo&state=' +

          state +

          '#wechat_redirect'

      } else {

        // 通过获取到的code,调用后台的接口,取得openId

        const res1 = await this.$http({

          url: '/sp_trunk/login/wxCallback',

          method: 'get',

          params: {

            code: code

          }

        })

        this.userInfo = res1.data.userInfo

        this.openId = this.userInfo.openid

        this.name = this.userInfo.nickname

        this.avatar = this.userInfo.headimgurl

      }


      // 后台获取code后应该传给我openId和信息,我将其保存到浏览器里。


      window.sessionStorage.setItem('openId', this.openId)


      // 把地址中的code值去掉,并将后面的参数保留下来

      if (window.location.href.indexOf('?code=') != -1) {

        var firstUrl = location.href.split('?code=')[0]

        this.endUrl = location.href.split('?code=')[1].split('#')[1]

        history.pushState('', '', firstUrl) // 参数可省略

      }

      // 开始走登录的流程

      const { data: res } = await this.$http({

        url: '/sp_trunk/login/login',

        method: 'POST',

        params: {

          openId: this.openId

        }

      })

      // 用户的账号如果不被冻结,就没有userStatus这个状态

      if (res.userStatus == 1) {

        return this.$toast('您的账号已被冻结,请解冻后使用')

      }


      // 如果是新用户就转去注册页面

      if (res.isNewUser) {

        this.$router.push({

          name: 'Registered',

          params: {

            openId: this.openId,

            name: this.name,

            avatar: this.avatar

          }

        })

      } else {

        // 如果已经注册,就直接进入页面

        this.userId = res.userId

        // 把userId存到浏览器里

        window.sessionStorage.setItem('userId', this.userId)

        // 获取自己的信息并存到浏览器里

        const userInfo = await this.$http({

          url: '/sp_trunk/user/getUserInfo',

          method: 'POST',

          params: {

            targetUserId: this.userId,

            userId: this.userId

          }

        })

        window.sessionStorage.setItem('myselfAvatar', userInfo.data.avatar)

        window.sessionStorage.setItem('myselfName', userInfo.data.name)

        // 如果浏览器里面有链接地址就跳转到浏览器的地址

        console.log(this.endUrl)

        if (this.endUrl != '/login') {

          this.$router.push(this.endUrl)

        } else {

          this.$router.push('/sp_trunk/qa/getDynamicQAs')

        }

      }

    },

然后,神奇的事情就出现了,我去,这里不能放图我怎么展示呢?算了,我放上来试试,万一只有我不能看你们能看呢~

这张图是我发布的转发内容,请忽略我乱写的文章和图片,反正样式是实现了的。

然后我在电脑的微信点击,确实是转到了我的目标页面,但是在手机上点击,就直接转到了首页,我想问一下这是咋回事呢?而且我复制了电脑页面和手机页面的网址,发现确实一个是目标页面(带参数),一个是首页的网址。

最后一次编辑于  04-01
回答关注问题邀请回答
收藏
登录 后发表内容
问题标签