如何实际操作公众号可以让小游戏在一定程度上裂变

优采云 发布时间: 2021-07-29 03:22

  如何实际操作公众号可以让小游戏在一定程度上裂变

  微信公众号的两种开发模式

  你可能有疑问?为什么要使用小号进行测试?其实微信公众号的开发有两种模式:

  编辑模式:主要针对非程序员和信息发布公众号。开启此模式后,您可以通过界面轻松配置“自定义菜单”和“自动回复消息”。

  开发模式:主要针对有开发能力的人。开启该模式后,您可以使用微信公众平台上开放的界面,通过编程实现自定义菜单的创建和用户消息的接收/处理/响应。这种模式比较灵活,建议有开发能力的公司或个人采用这种模式。

  简单来说,不需要编写代码,直接在微信公众号网页上配置自定义菜单或自动回复。这称为编辑模式;您需要编写代码来实现自动回复或更高级的逻辑,这称为开发模式;而这两种模式是互斥的,即一旦开启了开发模式,编辑模式就失效了。之前配置的自定义菜单和自动回复都是无效的。这对于我现在的公众号来说是不能接受的,因为编辑模式是模式里面的配置太多了。迁移到开发者模式需要大量的时间和成本,其次不稳定,所以我想到了我的尘土飞扬的小号。

  在正式开发之前,您需要有以下“纸”或“笔”:

  一台服务器(华南、华北、华东、华西最佳位置)

  一个有据可查的域名是最好的

  服务器访问微信公众号

  那么,在微信公众号的开发过程中,微信公众号后端就像一个代理服务器。微信公众号消息首先由微信公众号后端处理,然后转发到我们自己的服务器进行处理。这个过程我们必须遵循微信公众号的开发规范;那么,我们如何将微信公众号与我们自己的服务器连接起来呢?开发者接入微信公众平台进行开发,需要完成以下步骤:

  填写服务器配置:填写URL(只支持80(http)和443(https)端口,开发者文档说是服务器域名,准确的说不是你的服务器域名,但是你服务器上的微信公众号转发消息的根路由)、Token(可以填写)和EncodingAESKey(可以自动生成),这两个参数可能只有在访问时才有用。它们是使用 sha1 加密来确保安全性的几个参数中的第二个。比较在意,这一步主要是注意网址的正确性。

  验证服务器地址的有效性:点击验证按钮,网页会出现Token验证成功或失败的提示。

  根据接口文档实现业务逻辑:这是我们手写代码的部分。

  应用逻辑

  有个坑需要填写,个人微信公众号无法获取用户的基本信息:昵称、头像等

  获得这个权限需要认证,但是认证需要拿钱,但是我写的很烂

  回到我们创作的初衷,涉及到个性化的预测海报。我将简单地处理个性化部分,只是随机字符串。深入挖掘,需要个性化推荐,但没有用户信息,是不是要写点逻辑?用户丢了兴趣又回来了?这已经超出了本次创作的初衷,下次补上。

  至于制作海报,我使用PIL库中的ImageDraw对象,直接在预设海报上填写字符串即可。

  PIL 库的安装姿势是 pip install Pillow 而不是 pip install PIL

  然后应用服务器使用Flask框架(Flask是应用框架,nginx是web服务器,都是软件,Flask自己的生产环境服务器不足以支持实际应用,需要uwsgi应用服务器,nginx直接处理静态资源请求,逻辑请求转发给uwsgi;阿里云服务器是一个虚拟化的PC,包括软硬件;

  回到正题,假设我们的根路由是

  我们可以给这个路由绑定一个视图函数my_view(),同时打开开关处理post请求(默认只处理get)。我们所有的逻辑都可以通过这个视图函数来实现,并连接到公众号进行开发 当通过get方法向我们的服务器请求Token验证公众号时,验证后转发的消息通过post方法,那么我们就可以通过请求方式区分是验证还是转发。

  f request.method == ‘GET’:

  signature = request.args[‘signature’]

  timestamp = request.args[‘timestamp’]

  echostr = request.args[‘echostr’]

  nonce = request.args[‘nonce’]

  token = ‘我要爱这个世界’

  tempList = [令牌、时间戳、随机数]

  #字典顺序排序

  tempList.sort()

  #转成字符串

  tempStr = ”.join(tempList)

  #sha1 加密

  tempStr = hashlib.sha1(tempStr.encode(‘utf-8’)).hexdigest()

  如果 tempStr == 签名:

  print('令牌验证成功')

  返回 echostr

  其他:

  #可以发现之前的验证码其实无关紧要,只要返回echostr就验证成功

  返回 echostr

  elif request.method == ‘POST’:

  print('在这里写业务逻辑')

  我们还需要调用我们服务器上的微信接口。比如海报制作完成后,通过微信转发给用户,不能直接返回图片的二进制数据。事实上,这是由微信公众号完成的。我们需要上传发送海报到微信公众号素材库,获取海报的id,然后封装成xml数据返回给微信公众号(吐槽还没有升级成json交换数据) ,以便用户收到我们的海报。

  问题就在这里。将海报上传至微信公众号素材库。我在公众号文章编辑界面已经很久了。我以为我必须手动上传它。幸运的是,我找到了接口1,我们可以在服务器上调用它。这个接口1,为了防止这个接口1被滥用,必须提供access_token,但是access_token是从哪里来的呢?需要调用另一个接口2,接口2需要提供AppId和AppSecret参数。如果不自己修改,这两个长期有效,可以直接获取。

  接口 1:POST

  接口 2:获取

  另一个陷阱是这个access_token的有效期只有2个小时,所以需要不断更新,所以需要在我们的Flask中引入循环任务配置

  #定时任务配置类Config(object):#创建配置

  #任务列表

  工作 = [

  {

  ‘id’: ‘1’,

  'func': '__main__:refreshToken', # 定时执行的方法名

  'trigger': 'interval',#interval 表示循环任务

  'hours': 2, # 每两小时执行一次

  }

  ]

  app.config.from_object(Config()) # 为实例化的flask引入配置

  亿奇达积累了10年的行业经验!专业小程序,公众号H5、APP定制开发

  来电即刻享受优惠

  点击获取报价

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线