收藏
回答

云函数中获取微信公众号数据,IP不在白名单问题

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 客户端 wxbaf7f366ff1072d8 2.3.0

- 当前 Bug 的表现(可附上截图)


昨天的时候,云函数访问外网,他的IP还是固定的。

但是今天,云函数IP一直变化,基本每次调用都是不同的IP。这样就导致访问公众号数据时,出现IP不在公众号白名单中。无法获取公众号数据。


- 预期表现

如何解决?可否把IP固定下来?或者如何取消公众号ip白名单?或者如何在代码里面搞一个代理IP?


- 复现路径


- 提供一个最简复现 Demo


最后一次编辑于  2018-10-20
回答关注问题邀请回答
收藏

3 个回答

  • 唐全小程序
    唐全小程序
    2018-11-13

    if (usage == "getProxy"){

    //get wx token

    if (nowTime < expiryTime + wxTimeStamp) {

    console.log('wx token is OK')

    }

    else {

    console.log('updating wx token')

    var value = {

    method: 'GET',

    uri: ' https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + wxAppId + '&secret=' + wxSecret,

    json: true

    }

    if (proxyOn) value.proxy = 'http://' + proxyIP;

    const newTokenData2 = await rp(value)

    if (newTokenData2.access_token == null)

    {

    return {

    validToken:false,

    proxyIP: proxyIP,

    proxyOn: proxyOn,

    }

    }

    console.log('newToken2 is: ' + newTokenData2.access_token)

    await db.collection('token')

    .where({ secret: tokenData.data[0].secret })

    .update({

    data:

    {

    wxTimeStamp: parseInt(new Date().getTime() / 1000),

    wxAccessToken: newTokenData2.access_token,

    },

    })

    console.log('get wx new token finished')

    }


    return {

    validToken: true,

    proxyIP: proxyIP,

    proxyOn: proxyOn,

    }

    }


    2018-11-13
    赞同
    回复
  • 舍得叔叔
    舍得叔叔
    2018-11-13

    希望在云函数里面可以调用公众号接口,最好还能够接受微信服务器的消息。。。

    2018-11-13
    赞同
    回复 6
    • 唐全小程序
      唐全小程序
      2018-11-13

      已经搞定了,看看下面的代码。

      2018-11-13
      1
      回复
    • 舍得叔叔
      舍得叔叔
      2018-11-13回复唐全小程序

      没看懂,rp是什么?

      2018-11-13
      回复
    • 唐全小程序
      唐全小程序
      2018-11-13回复舍得叔叔

      var rp = require('request-promise')

      引用这个包,就可以使用http了。但是和公众号通信还是不行,因为IP不固定。你需要搞一个代理服务器。

      if (proxyOn) value.proxy = 'http://' + proxyIP;  //这个就是代理服务器 格式:1.1.1.1:80

      通过上面云函数里面的一串代码,你就可以获取到公众号token。然后你就可以利用这个token,用rp随便post get公众号了。

      2018-11-13
      回复
    • 舍得叔叔
      舍得叔叔
      2018-11-13回复唐全小程序

      听上去不错,我试试。。。另外,可以当服务器用吗,接受微信公众平台服务器的消息?哈哈

      2018-11-13
      回复
    • 舍得叔叔
      舍得叔叔
      2018-11-13回复唐全小程序

      代理服务器用的是哪个?


      2018-11-13
      回复
    查看更多(1)
  • 兰昊
    兰昊
    2018-10-26
    看看路由设置里的dhcp有没有自动分配
    2018-10-26
    赞同
    回复