收藏
回答

access_token一直过期,不被允许

我想获取access_token码,然后用customerServiceMessage.send给客户发送订单的相关信息,access_token每次都是从新获取的,但是一直报40001错误,invalid credential, access_token is invalid or not latest hint,很迷啊,不知道为什么,希望大神可以帮我一把,早日出坑!接下来把代码放上来:

wx.cloud.callFunction({
     name:'sendmessage',
     success:res=>{
       console.log(res.result)
       wx.request({
       url: 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN',
       method:'POST',
       data:{
         access_token: res.result,
         touser: that.data.orderarr[listindex]._openid,
         msgtype:'text',
         content:"感谢您的使用!"
       },
       success: res1=>{
         console.log(res1)
       },
       fail:err1=>{
         console.log(err1)
       }
     })
     }
   })

做一个简单说明,这个“sendmessage”云函数返回的是取到的access_token。

错误截图


回答关注问题邀请回答
收藏

2 个回答

  • 再见,电脑崽
    再见,电脑崽
    2019-04-11

    你url后面跟了一个?access_token=ACCESS_TOKEN

    与POST的data里的access_token冲突了

    把url后面的删除再看看

    2019-04-11
    有用
    回复 9
    • 胡天煜
      胡天煜
      2019-04-11


      去掉之后报这个错误

      2019-04-11
      回复
    • 再见,电脑崽
      再见,电脑崽
      2019-04-11回复胡天煜

      那你就把POST的data里的去掉啊,留url后面的access_token:


      url:'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=' + res.result,

      2019-04-11
      回复
    • 胡天煜
      胡天煜
      2019-04-11回复再见,电脑崽


      报这个错误

      2019-04-11
      回复
    • 再见,电脑崽
      再见,电脑崽
      2019-04-11回复胡天煜

      另外access_token一定要保存7000秒,不要每次都重新获取。

      2019-04-11
      回复
    • 再见,电脑崽
      再见,电脑崽
      2019-04-11回复胡天煜

      加上header:

      wx.cloud.callFunction({

          name: 'sendmessage',

          success: res => {

              console.log(res.result)

              wx.request({

                  url: 'https://api.weixin.qq.com/cgi-bin/message/custom/send',

                  method:'POST',

                  header: {

                      'content-type': 'application/x-www-form-urlencoded'

                  }

                  data:{

                      access_token: res.result,

                      touser: that.data.orderarr[listindex]._openid,

                      msgtype: 'text',

                      content: "感谢您的使用!"

                  },

                  success: res=>{

                      console.log(res)

                  },

                  fail: err=>{

                      console.log(err)

                  }

              })

          }

      })

      2019-04-11
      回复
    查看更多(4)
  • 痛快科技
    痛快科技
    2019-04-11

    可以将你的access_token存在数据库,每次从数据库中获取,验证过期时间,过期了重新获取,不要每次都获取新的,然后再试试

    2019-04-11
    有用
    回复 5
    • 胡天煜
      胡天煜
      2019-04-11

      没用啊,我也想过可能是获取太频繁,我就获取了一次,然后只调用send方法,并将send方法中的access_token写死了,然而还是报这个错误

      2019-04-11
      回复
    • 痛快科技
      痛快科技
      2019-04-11回复胡天煜

      可以看一下获取access_token的appid和你的小程序appid是同一个吗?

      2019-04-11
      回复
    • 胡天煜
      胡天煜
      2019-04-11回复痛快科技

      已经完美绝了!谢谢

      2019-04-11
      回复
    • 瑕不掩瑜
      瑕不掩瑜
      2019-04-17回复胡天煜

      楼主啊,我现在也遇到了!!,请问是怎么解决 的? 谢谢

      2019-04-17
      回复
    • 胡天煜
      胡天煜
      2019-04-17回复瑕不掩瑜

      私聊,加我微信:Hty11294223,有点复杂

      2019-04-17
      回复
登录 后发表内容