小程序不停地用不同code调用登录接口
发布于 6 年前 作者 yang44 14604 次浏览 来自 问答

使用开发者平台开发小程序的时候,我使用了里面的登录功能方法:

wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        // console.log(res.code);
        wx.request({
          url: 'https://test', // 这是我自己的后台接口
          data: {
            code: res.code
          },
          success: res => {
            console.log(res);
             
          }
        })
      }
    });

结果登录成功后,我保持页面不动,没有调任何函数,在接下来一段时间内,在我自己的后台接口里发现有请求不断地请求过来,而且每次的code都是不一样的,有时候会是“the code is a mock one.”,我想知道,这是不是开发工具里搞出来的?还是说是微信小程序后台有什么机制??

2 回复

我小程序并没有调我的https://test的接口,应该是小程序里面自动发起的,不知道有没有人有这个问题,有可能wx.login是被动的,但是不代表这个方法的回调里的处理没有重试机制之类的东西来不断调我的具体方法

1、每次调用wx.login返回的code都是不一样的,code的有效期是5分钟。

2、wx.login是被动调用的,也就是说你不主动调用,wx.login是不会自己跑的。

3、微信小程序的登录机制:

先调用wx.login获取code(wx.login是小程序与腾讯服务器做交互,此时并没有与你自己的后台做交互),拿到code后用wx.request发送请求到你自己的后台(此时才和你自己的后台做交互),调用微信的api去换取openId, sessionKey, unionId等数据。

4、如果一直不停的调用微信的api发请求获取openId,当前登录微信号会被禁用一段时间(亲测是这样的,禁用了大概有一两个小时或者不到一个小时吧),腾讯服务器认为是恶意请求。

5、建议检查代码逻辑,确保每个请求都正常执行并且正常跳出了(避免死循环长轮询调用)


回到顶部