移动端不需要跨页面的数据传输了,那是不是可以通过isMobileTerminal判断一下?

来源:18-8 微信开放平台大解析

曹学习

2022-06-16

目前QQ登录这块是下面这样的

// QQ 登录挂起
onMounted(() => {
  QC.Login(
    {
      btnId: 'qqLoginBtn' //插入按钮的节点id
    },
    // 登录成功之后的回调,但是需要注意,这个回调只会在《登录回调页面中被执行》
    // 登录存在缓存,登录成功一次之后,下次进入会自动重新登录(即:触发该方法,所以我们应该在离开登录页面时,注销登录)
    (data, opts) => {
      console.log('QQ登录成功')
      console.log(data)
      // 1.注销登录,否则在后续登录中会直接触发该回调
      QC.Login.signOut()
      // 2. 获取当前用户唯一标识,作为判断用户是否已注册的依据
      const accessToken = /access_token=((.*))&expires_in/.exec(
        window.location.hash
      )
      // 3. 拼接请求对象
      const oauthObj = {
        nickname: data.nickname,
        figureurl_qq_2: data.figureurl_qq_2,
        accessToken
      }
      console.log(oauthObj)
      // 4. 完成跨页面传输
      brodacast.send(oauthObj)
      // 5. 针对于 移动端而言:通过移动端触发 QQ 登录会展示三个页面,原页面、QQ 吊起页面、回调页面。并且移动端一个页面展示整屏内容,且无法直接通过 window.close() 关闭,所以在移动端中,我们需要在当前页面继续进行后续操作,不需要跨页面的数据传输了。
      oauthLogin(LOGIN_TYPE_QQ, oauthObj)
      // 6. 在 PC 端下,关闭第三方窗口
      window.close()
    }
  )
})

因为移动端特殊性所以不需要跨页面传输,那么是不是第四步可以直接通过isMobileTerminal判断一下,如果是移动端就不执行诶?还有就是如果不进行判断,就像上面这样写,保留brodacast.send和window.close在移动端下会不会有什么影响

写回答

1回答

Sunday

2022-06-16

你好

可以通过 isMobileTerminal 进行判断。但是不判断也不会出现错误。(移动端场景比较复杂,建议保留以避免出现意料之外的错误)


0
0

基于 Vue3 ,打造前台+中台通用开发提效解决方案

42 种前台常见业务模型, 15 种中台通用组件,成为前端提效高手

788 学习 · 517 问题

查看课程