收藏
回答

ios平台请求时携带不了token?安卓可以正常访问

原因是ios平台发送请求时token没有带上,ios真机调试请求可以携带token,上线后的小程序 ios平台就有问题;安卓都可以正常请求,这是什么原因呢?需要怎么改?

1、第一张图是ios打印的日志,第一条数据是打印的token数据,最后一条数据是没有带上token时请求的返回

2、第二张图是安卓平台打印的日志,第一条数据是打印的token数据,最后两条数据是发送请求的返回

下面代码块是请求封装的方法

function requestGet(url, callback, failCallback = null) {
  var token = wx.getStorageSync('token');
  if (Object.keys(token).length != 0) {
    log.info("get请求:打印", token)
  }
​
  let tokenTimestamp = +new Date(token.expiration);
  let timestamp = +new Date();
  let config = null;
  if (tokenTimestamp > timestamp) {
    config = {
      "Authorization": 'bearer ' + token.value
    }
  }
  wx.request({
    url: url,
    method: 'GET',
    header: config,
    success(res) {
      log.info("get请求:获取数据", res.data);
      log.info("get请求:header", res.header);
      callback(res);
    },
    fail: function (error) {
      failCallback && failCallback(error);
    }
  })
}
最后一次编辑于  2020-10-16
回答关注问题邀请回答
收藏

2 个回答

  • Raymond
    Raymond
    2020-10-19

    原因是ios平台时间戳转换不兼容,只要解决ios平台兼容问题就可以了。

    ios平台 new Date("2020-10-19 12:42:17").getDate() 转换后是NaN

    兼容处理方法:new Date('2020-10-19 12:42:17'.replace(/-/g, '/')).getTime();

    new Date('2020-10-19 12:42:17'.replace(/-/g, '/')) 转换后是时间为 2020/10/19 12:42:17

    2020-10-19
    有用
    回复
  • 睡前原谅一切
    睡前原谅一切
    2020-10-16

    你上传到体验版,用体验版测试。

    2020-10-16
    有用
    回复 3
    • 睡前原谅一切
      睡前原谅一切
      2020-10-16回复Raymond
      我想知道你封装的 请求 参数 打印拿到的token有值吗
      2020-10-16
      回复
    • 睡前原谅一切
      睡前原谅一切
      2020-10-16回复Raymond
      那说明数据是携带上了啊。后面哪一步 调用接口 token又没了?
      2020-10-16
      回复
    • 睡前原谅一切
      睡前原谅一切
      2020-10-16回复Raymond
      所以 你要一步一步走 看下 是哪个接口请求的时候没有token,是不是token过期了 自动清除了等等。
      2020-10-16
      回复
登录 后发表内容
问题标签